O daemon do Docker responde 'página 404 não encontrada' após a atualização

11

Atualizei recentemente minha janela de encaixe de 1,4 para 1,5 (com o pacote lxc_docker).

Desde então, o docker daemon envia um erro como este (para cada comando):

$ 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 

Mas se eu usar a versão anterior do cliente, recebo a resposta perfeita:

$ /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

Parece ser configurações de proxy ( HTTP_PROXYe as HTTPS_PROXYvariáveis ​​são usadas neste servidor), e eu posso resolver o problema definindo a NO_PROXYvariável:

$ 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

Você sabe de onde esse problema realmente vem? E como resolvê-lo de forma limpa ?

aveuiller
fonte

Respostas:

7

É um novo recurso 1.5, confirmado por um cara do docker (@icecrime no twitter). a documentação está atualizada: https://github.com/docker/docker/pull/10192/files

Então você não precisa resolvê-lo de forma limpa. Esta é a maneira correta de usar o docker atrás de um proxy.

François SAMIN
fonte
Não é um recurso, é um bug e foi corrigido na versão 1.6.0 - veja minha resposta.
Piotr Dobrogost
Obviamente, esse tipo de "recurso" não foi apreciado pelos usuários e foi corrigido da maneira correta no 1.6.0 ( github.com/docker/docker/pull/10739 ), lançado ontem.
François SAMIN 17/04/2015
5

Você sabe de onde esse problema realmente vem?

O problema vem do fato de que o docker desnecessariamente (alguém poderia argumentar erroneamente) tenta usar o proxy (se especificado por HTTP_PROXYou HTTPS_PROXYvariáveis ​​de ambiente) para acessar o soquete de domínio unix local em /var/run/docker.sock.

E como resolvê-lo de forma limpa?

Isso foi corrigido na versão 1.6.0 por não tentar usar proxy nesse caso. Como resultado, não há necessidade de adicionar /var/run/docker.socka NO_PROXYvariável de ambiente mais.

Piotr Dobrogost
fonte