我已经使用docker run -t -i -p 5000:5000registry
设置了私有(private)注册表,并且可以从192.168.59.103:5000访问它(我正在使用boot2docker)。现在我已经拉取了一个镜像 tutum/tomcat ,当我尝试将镜像 (docker push 192.168.59.103:5000/tomcat
) 标记为后推送到注册表中时192.168.59.103:5000/tomcat 我遇到如下错误 --
FATA[0004] Error: v1 ping attempt failed with error: Get https://192.168.59.103:5000/v1/_ping: EOF. If this private regi
stry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.59.103: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/192.168.59.103:5000/ca.crt
来自其他帖子 --
我读过一些关于此问题的帖子,其中指出添加 DOCKER_OPTS 可以解决问题,并且应该将其添加到 /etc/default/docker 中,但是在我的系统 /etc/default 不包含 docker 文件夹,如提供结果的命令 sudo ls/etc/default/
所示作为单个文件夹aufs。
另一篇文章指出,只需将证书添加到 /etc/docker/certs.d/192.168.59.103:5000/ca.crt 即可解决此问题,但我无法即使我使用 sudo 也可以进入 docker 目录,如下所示 - 对于 cd/etc/docker
-sh: cd: 无法 cd 到/etc/docker
我在 docker 内使用注册表 ip 作为 0.0.0.0:5000 重复了相同的过程(假设 $boot2docker ip
应该在主机中使用,而不是在 docker 中使用) - - 但这仍然没有解决我面临的问题。
请帮我解决这个问题。我在下面添加了系统规范--
系统规范:
Microsoft Windows 7 via. boot2docker (CLI version 1.5)
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.1
Git commit (server): a8a31ef
最佳答案
要使用 --insecure-registry
选项,请将其添加到 boot2docker VM 内的 /var/lib/boot2docker/profile
文件中。您可以使用 boot2docker ssh
进入虚拟机。文件内容应如下所示:
EXTRA_ARGS="--insecure-registry REGISTRY_IP:PORT"
然后您需要重新启动 boot2docker(例如 boot2docker restart
)。
我不知道为什么你不能编辑/etc/docker
。以下对我有用:
docker@boot2docker:~$ sudo ls /etc/docker
key.json
关于docker - 将文件推送到 Docker 中的私有(private)注册表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28712455/