* 有時候使用 Docker Hub 這樣的公共倉庫可能不方便,用戶能夠建立一個本地倉庫供私人使用。 * docker-registry是官方提供的工具,能夠用於構建私有的鏡像倉庫。
注:docker
* 隨着docker使用的鏡像愈來愈多,就須要有一個保存鏡像的地方,這就是倉庫。 * 目前經常使用的兩種倉庫: 公共倉庫和私有倉庫。最方便的就是使用公共倉庫上傳和下載, 下載公共倉庫的鏡像是不須要註冊的,可是上傳時,是須要註冊的。 * 私有倉庫最經常使用的就是registry、Harbor兩種,那接下來詳細介紹如何建立私有倉庫。 * 今天說的Registry倉庫,是經過一個容器給咱們提供的服務,是比較簡 易的私有倉庫,之後在企業中還會有功能更加完善的Harbor倉庫。
1)案例描述vim
兩臺docker服務器,dockerA建立registry私有倉庫,dockerB用於測試!
dockerA:centos
[root@dockerA ~]# docker pull registry:2 //下載registry:2的鏡像 [root@dockerA ~]# docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2 //建立一個registry容器來運行registry服務; //-p:端口映射(前面是宿主機端口:後面是容器暴露的端口); //-v:掛載目錄(前面是宿主機的目錄:後面的是容器的目錄)自動建立宿主機的目錄; //--restart=always:隨docker服務的啓動而啓動!
[root@dockerA ~]# docker tag centos:7 192.168.45.129:5000/centos:7 //更改鏡像名稱 注:私有倉庫鏡像的命名規則:192.168.45.129:5000/XXX(宿主機的IP:5000端口/鏡像名稱)
[root@dockerA ~]# vim /usr/lib/systemd/system/docker.service //修改docker主配置文件 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.45.129:5000 //修改本來的配置文件添加不安全的倉庫(--insecure-registry),地址是宿主機的IP地址與5000端口 [root@dockerA ~]# systemctl daemon-reload [root@dockerA ~]# systemctl restart docker //從新啓動docker服務 [root@dockerA ~]# docker push 192.168.45.129:5000/centos:7 //將重命名後的鏡像上傳到registry私有倉庫 [root@dockerA ~]# curl 192.168.45.129:5000/v2/_catalog //查看私有倉庫中的鏡像 {"repositories":["centos"]} [root@dockerA ~]# curl 192.168.45.129:5000/v2/centos/tags/list //查看鏡像的詳細信息 {"name":"centos","tags":["7"]}
dockerB:安全
[root@dockerB ~]# vim /usr/lib/systemd/system/docker.service //修改docker的主配置文件 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.45.129:5000 //添加內容與registry一致,指定registry私有倉庫服務器的IP地址及端口 [root@dockerB ~]# systemctl daemon-reload [root@dockerB ~]# systemctl restart docker //從新啓動docker服務 [root@dockerB ~]# curl 192.168.45.129:5000/v2/_catalog //查看私有倉庫中的鏡像 {"repositories":["centos"]} [root@dockerB ~]# curl 192.168.45.129:5000/v2/centos/tags/list //查看私有倉庫中的鏡像 {"name":"centos","tags":["7"]} [root@dockerB ~]# docker pull 192.168.45.129:5000/centos:7