docker-registry 的搭建

搭建最新的docker-registry 会遇到问题: <pre> $docker pull 10.0.1.44:5000/ubuntu 2014/12/13 13:02:47 Error: Invalid registry endpoint https://10.0.1.44:5000/v1/: Get https://10.0.1.44:5000/v1/_ping: dial tcp 10.0.1.44:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 10.0.1.44:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/10.0.1.44:5000/ca.crt </pre> 这是关于https的,在最新的docker 1.3.3中 无法pull ,因为默认的是https,该怎么办
已邀请:

jamlee - keep me alone

经过尝试,在我的<strong>客户端</strong>运行: ``` docker -d ----insecure-registry 10.0.1.44:5000 ``` 成功,问题完美解决。

xKenny - Deploy is never easy.

赞同来自: xiaomastack CDocer nicole 西弗尔 方圆小生 soli weschen manfat更多 »

我建议你不要加--insecure-registry 的参数启动,不灵活,想象你有多个registry负责不同种类的镜像,你难道要不停更改的docker的启动参数吗? 正确的方式在报错信息里已经有提示了: In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/10.0.1.44:5000/ca.crt 首先,你不要直接使用docker-registry,你在registry前面套一层nginx代理,在nginx里自己签一组证书,把ca.crt拷贝到 /etc/docker/certs.d/10.0.1.44:5000/ca.crt 就可以了。 这样的好处是,今后你还有第二套registry,你也只是把新的registry证书加入对应的目录,即可下载,而不是再加--insecure-registry重启。

xds2000 - 数人科技CTO

看你贴的错误信息,解决办法有:docker服务进程加上 `--insecure-registry 10.0.1.44:5000`, 就可以解决了。
sudo vim /etc/default/docker 增加以下一行: DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=10.0.1.44:5000" 重启Docker sudo service docker restart

lingsc - 80后IT跑男

补充下Mac中的具体解决办法: 参考文档:https://github.com/boot2docker/boot2docker#insecure-registry $ boot2docker init $ boot2docker up $ boot2docker ssh "echo $'EXTRA_ARGS=\"--insecure-registry <YOUR INSECURE HOST>\"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart" 注意:这样启动后,可能会出现如下问题: (1)FATA Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 解决方法: 退出boot2docker $boot2docker stop $boot2docker up (2)FATA Error: v1 ping attempt failed with error: Get http://192.168.59.103:5000/v1/_ping: dial tcp 192.168.59.103:5000: connection refused 解决办法:这是你忘记启动registry容器造成的 docker start <你的registry容器id>

徐磊 - BlackOps@Qunar

报错信息已经说的很详细了,要么自己添加证书走HTTPS,要么就用--insecure-registry
registry v2版本:依据官网文档搭建的,也出现了上述情况, 注意,注意: 在<strong>客户端</strong> /etc/sysconfig/docker 中添加如下内容: OPTIONS='--insecure-registry 10.20.140.249:5000 --selinux-enabled' 重启docker服务,服务连接正常。 systemctl restart docker.service
客户端我设置了'--insecure-registry 192.168.79.182:5000 --selinux-enabled'选项,也重启了daemon,但是连接服务端时还是出现“Error response from daemon: Get https://192.168.79.182:5000/v1/_ping: EOF”的错误,我服务端启动的registry如下: “docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry” 死活都连接不上,只能在服务端本地测试成功,请问还有哪里需要配置正确的?

allansun - 无名小虾

自己搭建就是一个大坑,我们公司自己搭建了一套,很快发现最大的问题竟然是硬盘空间,专门划分了100G的硬盘给docker-registry用,结果一个星期就被我们开发人员给装满了(我们采用持续交付,每次提交都会有一个版本,而且因为依赖库比较多,每个版本的新layer就将近1G),最后干脆放弃用自己的私有库,用回hub.docker.com了,算来竟然还是给别人托管更省钱。。。哈哈。。。

要回复问题请先登录注册