1、說明
在 Docker 中,當執行 docker pull xxx時,是從 registry.hub.docker.com 這個地址去查找,這就是Docker公司爲我們提供的公共倉庫,上面的鏡像,大家都可以看到,也可以使用,但是速度較慢。並且要在公司中使用 Docker,我們基本不可能把商業項目上傳到公共倉庫中,那如果要多個機器共享,怎麼辦?解決辦法就是搭建私有倉庫。
2、環境
docker服務器地址:10.*.*.87:
docker私有倉庫服務器,運行registry容器;
mkdir –p /data/registry #建立鏡像上傳目錄
3、部署(服務端操作)
(1)下載鏡像registry
#docker pull registry
#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Registry latest f32a97de94e1 2 months ago 25.8MB
(2)運行registry容器
#docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --name registry registry:latest
參數說明:
-itd:在容器中打開一個僞終端進行交互操作,並在後臺運行;
-v:把宿主機的/data/registry目錄綁定到容器/var/lib/registry目錄(這個目錄是registry容器中存放鏡像文件的目錄),實現數據的持久化;
-p:映射端口;訪問宿主機的5000端口就訪問到registry容器的服務了;
--name registry:創建容器命名爲registry,你可以隨便命名;
registry:latest:上面pull下來的鏡像;
(3) 測試鏡像倉庫中所有的鏡像
#curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
現在是空的,因爲纔剛運行,裏面沒有任何鏡像內容。
(4)創建修改/etc/docker/daemon.json文件:
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
"insecure-registries": [ "10.*.*.87:5000"]
}
重啓服務:
#systemctl restart docker
(5)爲鏡像打標籤
docker tag centos:latest 10.*.*.87:5000/centos:v1
格式說明:Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
centos:latest 源鏡像;
10.*.*.87:5000/centos:v1目標鏡像,也是registry私有鏡像服務器的IP地址和端口;
(6) 上傳到鏡像服務器
#docker push 10.*.*.87:5000/centos:v1
(7)檢查上傳的鏡像
# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["centos","test001","ubuntu"]}
列出所有鏡像
# curl http://10.*.*.87:5000/v2/_catalog
{"repositories":["centos","test001","ubuntu"]}