Демон Docker отвечает «404 страница не найдена» после обновления

11

Я недавно обновил свой докер с 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переменные используются на этом сервере), и я могу решить проблему, установив 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

Вы знаете , где эта проблема действительно пришел? И как это чисто решить?

aveuiller
источник

Ответы:

7

Это новая функция 1.5, парень из докера (@icecrime в твиттере) подтвердил это. документация обновлена: https://github.com/docker/docker/pull/10192/files

Так что вам не нужно чисто решать это. Это правильный способ использовать докер за прокси.

Франсуа САМИН
источник
Это не функция, это ошибка, и она была исправлена ​​в версии 1.6.0 - см. Мой ответ.
Петр Доброгост
Очевидно, что этот вид «функции» не был оценен пользователями и был исправлен в 1.6.0 ( github.com/docker/docker/pull/10739 ), который вышел вчера.
Франсуа САМИН
5

Вы знаете, откуда эта проблема?

Проблема возникает из-за того, что docker без необходимости (можно ошибочно утверждать) пытается использовать прокси-сервер (если он указан HTTP_PROXYили HTTPS_PROXYпеременные окружения) для доступа к локальному сокету домена unix в /var/run/docker.sock.

И как это чисто решить?

Это было исправлено в версии 1.6.0, когда в этом случае не использовался прокси. В результате нет необходимости добавлять /var/run/docker.sockк NO_PROXYпеременной окружения больше.

Петр Доброгост
источник