Недавно я обновил свой докер с 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
Ты знаешь где эта проблема действительно родом из? И как чисто реши?
Это новая функция 1.5, это подтвердил парень из Docker (@icecrime в твиттере). документация актуальна: https://github.com/docker/docker/pull/10192/files
Так что вам не нужно решать это чисто. Это правильный способ использовать докер за прокси.
Вы знаете, откуда на самом деле возникла эта проблема?
Проблема возникает из-за того, что докер без нужды (можно ошибиться) пытается использовать прокси (если указано в HTTP_PROXY
или HTTPS_PROXY
переменные среды) для доступа местный сокет домена unix в /var/run/docker.sock
.
И как это чисто решить?
Это было фиксированный в версии 1.6.0, не пытаясь в этом случае использовать прокси. В результате нет необходимости добавлять /var/run/docker.sock
к NO_PROXY
переменной окружения больше нет.