一、實驗環境準備
準備好兩台主機作為主控端,主機應設靜态ip,且在同一網段并能聯網。
主控端資訊:
Host1-ip:192.168.135.77(網卡裝置為ens33,作為私有倉庫服務端)
Host2-ip:192.168.135.75(網卡裝置為ens33,作為私有倉庫用戶端)
gateway:192.168.128.1
netmask:255.255.248.0
二、安裝docker與搭建本地私有鏡像倉庫
1、關閉防火牆和Selinux
vi /etc/selinux/config 将enforceing改為disabled
chkconfig firewall off 關閉防火牆
reboot 重新開機系統使之生效
步驟1的主要作用是便于安裝docker和其他系統設定
2、安裝docker
yum install docker
service docker restart 重新開機docker服務
3、搭建docker本地私有庫
docker pull registry 拉取倉庫鏡像
docker run –d –p5000:5000 –v /opt/data/registry:/tmp/registry registry
這裡要注意的是,docker的本地私有倉庫鏡像預設放在容器内的/tmp/registry,要想儲存該倉庫内的鏡像,必須将本地的某個檔案夾挂載在該目錄下。
docker runregistry_iamge_id /bin/sh 啟動該倉庫鏡像
啟動該倉庫鏡像後才能在本地pull和push鏡像
push鏡像時可能會失敗,可執行如下操作解決:在”/etc/docker/“目錄下,編輯”daemon.json“檔案。
在檔案中寫入{ "insecure-registries":["192.168.135.77:5000"]}
注意:私有倉庫的服務端和用戶端都要進行這一操作。
三、制作自己需要的基礎鏡像
大多數情況下,可以去官方倉庫拉取基礎鏡像。
docker pull linux_image
也可以自己制作基礎鏡像
1、制作docker的基礎的Linux系統鏡像
運作下面指令
tar-cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev--exclude=run --exclude=boot .(“不要忽略結尾處的”.””)
此指令是,将主控端的根目錄下大部分檔案打成tar包并存放在目前目錄,也可以設定其他目錄替換“.”。
将tar檔案導入到docker
dockerimport system.tar centos:7 system.tar為tar包名,centos:7為導入docker後的鏡像名。
2、啟動該鏡像制作容器
通過Dockerfile的方式啟動鏡像,制作容器,此為其中一種方式。
dockerbuild –t=’centos’ .
這一操作可以啟動定制的容器,且Dockerfile與其他需要配合的軟體需處于目前目錄。(注意:不要落下最後的“.”,它表示dockerfile所處位置)
在dockerfile内,可以配置容器的ssh服務,以及安裝其他軟體和配置其運作環境。
另一種方式為直接啟動建立的docker基礎系統鏡像
dockerrun -it centos:7 /bin/bash
可以選擇重命名容器名
dockerrename old容器名 new容器名
登入第一個方法建立的容器
dockerexec –it 容器id/bin/bash
可以選擇對容器進行操作,然後将容器狀态制作成新的image。
docker commit container_id new_image_name
四、push剛建好的新鏡像至本地私有倉庫
在push鏡像之前需要對目标鏡像tag。
docker tag des_image localhost_ip:5000/des_image
然後push鏡像
docker push local_ip:5000/des_image
檢視上傳的image
curl-XGET 192.168.135.77:5000/v2/_catalog
從私有倉庫pull鏡像
dockerpull 192.168.135.77:5000/centos:tag_name
五、安裝pipework并建立網橋
1、安裝各類工具
安裝git
yum install git
安裝pipework
git clone https://github.com/jpetazzo/pipework
使pipework指令生效
cp ~/pipework/pipework /usr/local/bin/
安裝相應依賴軟體bridge-utils(網橋)
yum install iputils-arping bridge-utils –y
2、更改主控端網絡配置檔案
網絡配置如下:
cd /etc/sysconfig/network-scripts/ifcfg-ens33
cp ifcfg-ens33 ifcfg-br0
vi ifcfg-ens33删除ip,netmask,新增BRIDGE=br0。
vi ifcfg-br0 設TYPE=Bridge,DEVICE=br0。
Service network restart
Service docker restart
六、開啟容器并為容器配置ip
開啟一個image并指定網絡模式為none(這樣,建立的容器就不會通過docker0自動配置設定ip了,而是根據pipework工具自定ip指定)
docker run -itd --net=none --name=my_centos image_id /bin/bash
給該容器配置網絡(注意網卡裡的gateway不能缺失)
pipework br0 –i ens33 my_centos192.168.135.73/[email protected]
-i指定網卡名,後面為指定container的ip,netmask,gateway。
登入該容器
docker exec -it my_centos /bin/bash
ifconfig ens33 若無ifconfig則可yum安裝net-tools工具
七、Host-2制作docker的container
從私有倉庫pull鏡像
dockerpull 192.168.135.77:5000/centos:tag_name
安裝docker,重複步驟五、六。
八、Host-1和Host-2内的docker container互相ping
驗證是否能ping通。
網際網路參考資料:
1、https://blog.csdn.net/linux_player_c/article/details/53117238
2、https://www.cnblogs.com/chen110xi/p/6349454.html