自建 Docker 本地私有仓库。
准备 push 到仓库,报标题错误。
少啰嗦,直接上解决方案。
如果你 docker push
的时候报错内容和我上面一样,那是因为客户端push的时候采用https协议,而registry未使用https导致的。
修改 /etc/docker/daemon.json
文件(如果没有就创建新的),并写入如下内容:
{
"insecure-registries":[
"192.168.0.110:5000",
"localdockerreghost:5000"
]
}
其中,把 192.168.0.110
换成你自己 registry 服务
的地址。
而 localdockerreghost
是我在 /etc/hosts
文件中自定义的主机名,和 192.168.0.110
是同一个,用起来比纯 ip 更方便点。
修改完成之后,重启 docker 服务。
[root@localhost ~]# service docker restart
重启完成之后可能还会报错,如果你的 registry 服务
是运行在本地,看看你的 registry 服务
是不是没起来。
先看看我都执行了哪些指令(除了安装 docker):
1、启动 registry
镜像
[root@localhost ~]# docker run -d -p 5000:5000 --restart=always --name registry registry:2
a9f69aadb55eddc64a0431d0f9a1826c18286721610acde1dc7cd6a92d1fa549
2、查看本地镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2 f32a97de94e1 8 months ago 25.8MB
hello-world latest fce289e99eb9 11 months ago 1.84kB
3、给镜像加 tag
[root@localhost ~]# docker tag hello-world localdockerreghost:5000/hwtest
4、再次查看本地镜像,可以看到,已经有新内容了
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2 f32a97de94e1 8 months ago 25.8MB
hello-world latest fce289e99eb9 11 months ago 1.84kB
localdockerreghost:5000/hwtest latest fce289e99eb9 11 months ago 1.84kB
5、用 docker push
上传标记的镜像
[root@localhost ~]# docker push localdockerreghost:5000/hwtest
The push refers to repository [localdockerreghost:5000/hwtest]
af0b15c8625b: Pushed
latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
上面的 localdockerreghost
是我在 /etc/hosts
中定义好的主机名。
6、查看仓库中的镜像
[root@localhost ~]# curl http://192.168.0.110:5000/v2/_catalog
{"repositories":["hwtest"]}
完美。
这里有几点需要注意哈:
1、 修改 /etc/docker/daemon.json
文件,是要修改客户端的文件,而不是服务端(registry 服务
)
2、修改完 /etc/docker/daemon.json
文件,要重启 docker 服务
3、如果 registry 服务
运行在本地,也要记得启动 registry
4、有用记得回来点个赞