1.有時候,在公司內部為了提高分享的速度,需要在公司內部自己搭建一個本地的倉庫,供私人使用。
2.docker官方提供了一個工具docker-registry,我們可以借助這個工具構建私有鏡像倉庫
a.首先,使用docker search命令查找
b.docker pull registry
通過docker images查看,可以看到registry鏡像
c.運行registry:docker run -d -p 5000:5000 -v /root/docker/registry:/tmp/registry registry
默認情況下,倉庫會創建在容器中的/tmp/registry目錄下,通過 -v 指定將鏡像文件存放在本地的目錄中。
通過ps -ef|grep 5000可以發現5000端口已被監聽
d.搭建好了私有倉庫之后,就可以上傳、下載、搜索鏡像了。
查看本機ip:ifconfig ##獲取ip為192.168.1.160
查看本地已有的鏡像:docker images
將my/centos標記為 192.168.1.160:5000/centos;使用命令:docker tag 90a93df7436d 192.168.1.160:5000/centos
90a93df7436d為my/centos鏡像ID;192.168.1.160:5000為本地私有倉庫地址和端口
使用docker push上傳標記的鏡像到本地私有倉庫:docker push 192.168.1.160:5000/centos
第一次執行"docker push 192.168.1.160:5000/centos"可能報如下異常:
The push refers to a repository [192.168.1.160:5000/centos]
Get https://192.168.1.160:5000/v1/_ping: http: server gave HTTP response to HTTPS client
解決方案:在/etc/docker目錄下新建 daemon.json, 文件中寫入:{ "insecure-registries":["192.168.1.160:5000"] }
然后重啟docker:systemctl restart docker
重新運行registry:docker run -d -p 5000:5000 -v /root/docker/registry:/tmp/registry registry
再次運行"docker push 192.168.1.160:5000/centos"上傳鏡像到私有倉庫。
接下來,我們可以到另一台機器192.168.1.60下載160上傳的192.168.1.160:5000/centos鏡像:docker pull 192.168.1.160:5000/centos
查看Registry中所有鏡像信息 $ curl http://192.168.1.160:5000/v2/_catalog {"repositories":["aa","mysql"]} 下載鏡像 $ docker pull 192.168.1.160:5000/aa $ docker pull 192.168.1.160:5000/mysql