更新后,Docker守护进程答案'404页面未find'

我最近更新我的docker从1.4到1.5(与包lxc_docker )。

从那以后,docker守护进程发送一个像这样的错误(对于每个命令):

 $ 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_PROXYvariables),我可以通过设置NO_PROXYvariables来解决问题:

 $ 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.5特性,来自docker的一个人(twitter上的@icecrime)已经证实了这一点。 该文档是最新的: https : //github.com/docker/docker/pull/10192/files

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

你知道这个问题真的从哪里来吗?

问题来自Docker不必要地(可能HTTPS_PROXY错误的争论)尝试使用代理(如果由HTTP_PROXYHTTPS_PROXY环境variables指定)来访问本地 unix域套接字/var/run/docker.sock

而如何干净地解决它?

在1.6.0版本中这个问题已经解决了 ,在这种情况下不要使用代理。 因此,不需要将/var/run/docker.sock添加到NO_PROXY环境variables中。