更新后,Docker 守护进程回答“404 页面未找到”

更新后,Docker 守护进程回答“404 页面未找到”

我最近将我的docker从1.4更新到了1.5(带有包lxc_docker)。

从那时起,docker daemon 就会发送如下错误(对于每个命令):

$ docker version 
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
FATA[0000] Error response from daemon: 404 page not found 

但如果我使用以前版本的客户端,我会得到很好的答案:

$ /usr/bin/docker-old version 
Client version: 1.4.0
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 4595d4f
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

似乎是代理设置(HTTP_PROXYHTTPS_PROXY该服务器上使用了变量),我可以解决通过设置变量来解决问题NO_PROXY

$ export NO_PROXY="/var/run/docker.sock"
$ docker version  
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

你知道这个问题出在哪里吗真的从何而来?又如何干净地解决这个问题?

答案1

这是 1.5 版的新功能,docker 的一名成员(Twitter 上的@icecrime)已证实了这一点。文档是最新的:https://github.com/docker/docker/pull/10192/files

所以你不必干净利落地解决它。这是在代理后使用 docker 的正确方法。

答案2

您知道这个问题究竟出在哪里吗?

问题在于,docker 不必要地(有人可能会认为是错误的)尝试使用代理(如果由HTTP_PROXY或指定)HTTPS_PROXY环境变量指定)来访问当地的unix 域套接字位于/var/run/docker.sock

以及如何彻底解决它?

这是固定的在 1.6.0 版本中,在这种情况下不尝试使用代理。因此,不再需要添加/var/run/docker.sockNO_PROXY环境变量中。

相关内容