docker-registry 的搭建


搭建最新的docker-registry 会遇到问题:
$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

这是关于https的,在最新的docker 1.3.3中 无法pull ,因为默认的是https,该怎么办
已邀请:

jamlee - keep me alone

赞同来自:


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

xKenny - Deploy is never easy.

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


我建议你不要加--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, 就可以解决了。

KiwenLau

赞同来自:


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 ... istry
$ 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[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
解决方法:
退出boot2docker
$boot2docker stop
$boot2docker up

(2)FATA[0000] 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

zjy19811001

赞同来自:


registry v2版本:依据官网文档搭建的,也出现了上述情况,

注意,注意:
客户端 /etc/sysconfig/docker 中添加如下内容:

OPTIONS='--insecure-registry 10.20.140.249:5000 --selinux-enabled'

重启docker服务,服务连接正常。
systemctl restart docker.service

thebeeman

赞同来自:


客户端我设置了'--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了,算来竟然还是给别人托管更省钱。。。哈哈。。。

要回复问题请先登录注册