从 docker 中的 docker 登录私人 docker 注册表时出现服务器错误
Server Error when logging in to a private docker registry from docker in docker
我正在使用 boot2docker 和 docker 1.4.1,我是 运行 一个 Jenkins 容器,它也作为主机运行 Docker(也是版本1.4.1).但是,当我尝试使用以下方式登录我的 Tutum 私人 Docker 注册表时:
sudo docker login -u=username -p=**** -e=my@email.com tutum.co
我最终遇到以下错误:
Server Error: Post https://tutum.co/v1/users/: dial tcp: lookup tutum.co on [192.168.1.1]:53
如果我从 Jenkins 容器外部登录,一切正常。这是什么原因,我该如何解决?
更新:
如果我在 Jenkins 容器 (sudo service docker stop
) 中停止 Docker 服务并使用以下命令启动它:
sudo docker -d &
我得到了一些更详细的信息:
INFO[0003] POST /v1.16/auth
INFO[0003] +job auth()
Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
INFO[0005] -job auth() = ERR (1)
ERRO[0005] Handler for POST /auth returned error: Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
ERRO[0005] HTTP Error: statusCode=404 Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
FATA[0001] Error response from daemon: Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
我已按照 Javier 的暗示通过更改 DNS 服务器来设法解决此问题。 Docker 使用 /etc/resolv.conf
中指定的指向 192.168.1.1
的 DNS 服务器。我更改了这个 8.8.8.8
然后我就可以登录了。
更新:
今天我试图覆盖 Dockerfile
中的 /etc/resolv.conf
文件,但结果是 Docker 在容器启动时设置了 DNS。这意味着我从 Dockerfile
添加的文件 resolv.conf
文件被覆盖。解决方法是在容器启动的时候加上--dns 8.8.8.8
。例如
docker run --dns 8.8.8.8 ubuntu:14.04 <some_command>
我正在使用 boot2docker 和 docker 1.4.1,我是 运行 一个 Jenkins 容器,它也作为主机运行 Docker(也是版本1.4.1).但是,当我尝试使用以下方式登录我的 Tutum 私人 Docker 注册表时:
sudo docker login -u=username -p=**** -e=my@email.com tutum.co
我最终遇到以下错误:
Server Error: Post https://tutum.co/v1/users/: dial tcp: lookup tutum.co on [192.168.1.1]:53
如果我从 Jenkins 容器外部登录,一切正常。这是什么原因,我该如何解决?
更新:
如果我在 Jenkins 容器 (sudo service docker stop
) 中停止 Docker 服务并使用以下命令启动它:
sudo docker -d &
我得到了一些更详细的信息:
INFO[0003] POST /v1.16/auth
INFO[0003] +job auth()
Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
INFO[0005] -job auth() = ERR (1)
ERRO[0005] Handler for POST /auth returned error: Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
ERRO[0005] HTTP Error: statusCode=404 Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
FATA[0001] Error response from daemon: Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
我已按照 Javier 的暗示通过更改 DNS 服务器来设法解决此问题。 Docker 使用 /etc/resolv.conf
中指定的指向 192.168.1.1
的 DNS 服务器。我更改了这个 8.8.8.8
然后我就可以登录了。
更新:
今天我试图覆盖 Dockerfile
中的 /etc/resolv.conf
文件,但结果是 Docker 在容器启动时设置了 DNS。这意味着我从 Dockerfile
添加的文件 resolv.conf
文件被覆盖。解决方法是在容器启动的时候加上--dns 8.8.8.8
。例如
docker run --dns 8.8.8.8 ubuntu:14.04 <some_command>