0

我正在尝试将容器从本地开发盒推送到远程私有存储库,该存储库的主机名在我的 Windows 主机文件中设置。当我推动时,我得到了这个:

docker push docker:5000/m2
The push refers to a repository [docker:5000/m2]
Put http://docker:5000/v1/repositories/m2/: dial tcp: lookup docker on 192.168.65.1:53: no such host

如果我使用 babun 在 URL 上执行 curl -vvv,我会得到:

curl -vvv http://docker:5000/v1/repositories/m2/
* STATE: INIT => CONNECT handle 0x20048188; line 1034 (connection #-5000)
* Added connection 0. The cache now contains 1 members
*   Trying 192.168.1.8...
* STATE: CONNECT => WAITCONNECT handle 0x20048188; line 1087 (connection #0)
* Connected to docker (192.168.1.8) port 5000 (#0)
* STATE: WAITCONNECT => DO handle 0x20048188; line 1229 (connection #0)
> GET /v1/repositories/m2/ HTTP/1.1
> User-Agent: Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))
> Host: docker:5000
> Accept: */*
>
* STATE: DO => DO_DONE handle 0x20048188; line 1314 (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x20048188; line 1441 (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x20048188; line 1454 (connection #0)
* Increasing bytecount by 7 from hbuflen

* nread <= 0, server closed connection, bailing
* STATE: PERFORM => DONE handle 0x20048188; line 1626 (connection #0)
* Connection #0 to host docker left intact
* Expire cleared

由于我在本地收到错误消息,但在我使用 curl 时没有收到错误消息,因此我的本地 Windows docker 实例似乎没有解析为docker主机名。

4

1 回答 1

1

Docker 在远程 docker 守护进程上进行推送,而不是本地 docker 客户端,这意味着 DNS 解析需要在该系统上工作。这还包括任何代理设置。最近还有一个错误,它至少影响了 Mac 版 Docker,也可能影响了 Windows,它没有使用本地 DNS 服务器。我相信这已在 1.13.1 中修复,但我已经通过将我需要的条目添加到 /etc/hosts 文件中来解决这个问题(我相信 Windows 仍然将它放在 system32\drivers\etc 下)。

请注意,在您更改 Windows 主机上的 DNS 设置以使名称解析正常工作后,您可能需要重新启动 docker 守护程序以使嵌入式 VM 重新启动这些更改。

于 2017-02-27T19:24:52.857 回答