在 docker 中,當我們執行 docker pull xxx 的時候 ,它實際上是從 registry.hub.docker.com 這個地址去查找,這就是Docker公司為我們提供的公共倉庫。
在工作中,由於FQ網絡延遲的問題、項目的私密性,我們需要搭建本地私有倉庫。這一篇介紹docker中registry私有倉庫搭建
Linux docker私有倉庫搭建
docker 官方提供了一個搭建私有倉庫的鏡像 registry ,只需把鏡像下載下來,運行容器並暴露5000端口,就可以使用了
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
registry服務默認會將上傳的鏡像保存在容器的/var/lib/registry,我們將主機的/opt/registry目錄掛載到該目錄,即可實現將鏡像保存到主機的/opt/registry目錄了。
瀏覽器訪問http://docker私倉服務器ip:5000/v2,出現下面情況說明registry運行正常。
Windows docker push 鏡像到私有倉庫
dokcer設置Daemon Insecure registries:私倉ip:5000
(Linux docker push 需要修改/etc/docker/daemon.json 執行命令: echo '{ "insecure-registries":["私倉ip:5000"] }' > /etc/docker/daemon.json)
查看本地鏡像
通過docker tag將該鏡像標志為要推送到私有倉庫
docker tag nginx:latest 172.16.7.24:5000/nginx:latest
通過docker push 命令將nginx 鏡像push 到私有倉庫中
docker push 172.16.7.24:5000/nginx:latest
訪問 http://172.16.7.24:5000/v2/_catalog 查看私有倉庫目錄,可以看到剛上傳的鏡像了
Linux docker pull 下載私有鏡像
1.修改/etc/docker/daemon.json,把客戶對私有庫地址請求改為http
echo '{ "insecure-registries":["172.16.7.24:5000"] }' > /etc/docker/daemon.json
OR
vim /etc/docker/daemon.json
{ "insecure-registries":["172.16.7.24:5000"] }
2.修改docker配置文件后,需要重啟docker
systemctl restart docker
3.(可選)因私倉和docker pull用的是同一台linux服務器,需要對私倉容器進行啟動操作
docker start 私倉容器ID
4.下載私有鏡像,使用命令如下
docker pull 172.16.7.24:5000/nginx:latest
最終顯示界面