1、下載運行register容器
$ docker run -d -v /Users/miuye/Public/registry:/var/lib/registry -p 5000:5000 --name myRegistry registry
1
/Users/miuye/Public/registry是我個人的掛載的本地目錄,push到該倉庫的鏡像會保存在該路徑下。
安裝完成后,可以通過訪問http://127.0.0.1:5000/v2進行驗證,看到如下圖片就說明成功了。
2、push鏡像到倉庫
2.1 通過docker images可以查看目前有的鏡像
以httpd作為實驗對象推送到私有倉庫中。
2.2 通過docker tag將該鏡像標志為要推送到私有倉庫
$ docker tag httpd:1.0 localhost:5000/httpd:1.0
1
?
2.3 通過 docker push 命令將 httpd 鏡像 push到私有倉庫中
$ docker push localhost:5000/httpd:1.0
1
【可以通過修改/etc/hosts文件使用域名進行訪問】
推送完后可以通過訪問http://127.0.0.1:5000/v2/_catalog進行驗證
3、通過 docker pull 命令從倉庫pull鏡像
$ docker pull 192.168.1.66:5000/httpd:1.0
1
報錯:http: server gave HTTP response to HTTPS client
原因:Docker自從1.3.X之后docker registry交互默認使用的是HTTPS,但是搭建私有鏡像默認使用的是HTTP服務,所以與私有鏡像交時出現以上錯誤。
解決辦法:
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面加參數–insecure-registry 192.168.1.66:5000
【注意:192.168.1.66是我私有倉庫所在主機的ip,需要改成自己的倉庫ip或者域名】
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.1.66:5000
1
修改好后重啟docker 服務
systemctl daemon-reload?
systemctl restart docker
1
2
vi /etc/docker/daemon.json 沒有的話自己新建一個
加入以下內容:(注意ip改成自己的)
{ "insecure-registries":["192.168.1.66:5000"] }
1
修改好后重啟docker 服務
systemctl daemon-reload?
systemctl restart docker
1
2
重新pull
$ docker pull 192.168.1.66:5000/httpd:1.0
1
成功
4、體驗小優化
4.1 在push端添加host后通過域名進行push
?
2、pull端添加hosts后通過域名進行pull
docker.service和daemon.json也修改為對應域名
這樣push和pull的時候如果倉庫ip發生了變化,只需要修改hosts即可。