我最近更新我的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_PROXY
和HTTPS_PROXY
variables),我可以通过设置NO_PROXY
variables来解决问题:
$ 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_PROXY
或HTTPS_PROXY
环境variables指定)来访问本地 unix域套接字/var/run/docker.sock
。
而如何干净地解决它?
在1.6.0版本中这个问题已经解决了 ,在这种情况下不要使用代理。 因此,不需要将/var/run/docker.sock
添加到NO_PROXY
环境variables中。