Le démon Docker répond «La page 404 est introuvable» après la mise à jour

11

J'ai récemment mis à jour mon docker de 1.4 à 1.5 (avec le package lxc_docker).

Depuis lors, le démon docker envoie une erreur comme celle-ci (pour chaque commande):

$ 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 

Mais si j'utilise la version précédente du client, j'obtiens la bonne réponse:

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

Il semble s'agir de paramètres proxy ( HTTP_PROXYet des HTTPS_PROXYvariables sont utilisées sur ce serveur), et je peux résoudre le problème en définissant la NO_PROXYvariable:

$ 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

Savez-vous d'où vient vraiment ce problème ? Et comment le résoudre proprement ?

aveuiller
la source

Réponses:

7

C'est une nouvelle fonctionnalité 1.5, un gars de docker (@icecrime sur twitter) l'a confirmée. la documentation est à jour: https://github.com/docker/docker/pull/10192/files

Vous n'avez donc pas à le résoudre proprement. C'est la bonne façon d'utiliser docker derrière un proxy.

François SAMIN
la source
Ce n'est pas une fonctionnalité, c'est un bug et il a été corrigé dans la version 1.6.0 - voir ma réponse.
Piotr Dobrogost
Évidemment, ce type de "fonctionnalité" n'a pas été apprécié par les utilisateurs et a été corrigé dans le bon sens dans 1.6.0 ( github.com/docker/docker/pull/10739 ) qui sort hier.
François SAMIN
5

Savez-vous d'où vient vraiment ce problème?

Le problème vient du fait que Docker essaie inutilement (on pourrait dire à tort) d'utiliser un proxy (s'il est spécifié par HTTP_PROXYou HTTPS_PROXYdes variables d'environnement) pour accéder à la socket du domaine Unix local sur /var/run/docker.sock.

Et comment le résoudre proprement?

Cela a été corrigé dans la version 1.6.0 en n'essayant pas d'utiliser le proxy dans ce cas. Par conséquent, il n'est plus nécessaire d'ajouter /var/run/docker.sockà NO_PROXYla variable d'environnement.

Piotr Dobrogost
la source