Ошибка сервера при входе в частный реестр докеров из докера в докере

Я использую boot2docker и docker 1.4.1, и я запускаю контейнер Jenkins, который также запускает Docker в качестве хоста (также версии 1.4.1). Однако, когда я пытаюсь войти в свой Tutum частный реестр Docker, используя:

sudo docker login -u=username -p=**** [email protected] tutum.co

Я получаю следующую ошибку:

Server Error: Post https://tutum.co/v1/users/: dial tcp: lookup tutum.co on [192.168.1.1]:53

Все работает нормально, если я вхожу из-за пределов контейнера Jenkins. В чем причина этого и как мне обойти это?

Обновлять:

Если я остановлю службу Docker внутри контейнера Jenkins (sudo service docker stop) и запущу ее, используя:

sudo docker -d &

Я получаю более подробную информацию:

INFO[0003] POST /v1.16/auth
INFO[0003] +job auth()
Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
INFO[0005] -job auth() = ERR (1)
ERRO[0005] Handler for POST /auth returned error: Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
ERRO[0005] HTTP Error: statusCode=404 Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host
FATA[0001] Error response from daemon: Get https://tutum.co/v1/_ping: dial tcp: lookup tutum.co on [192.168.1.1]:53: no such host

person Johan    schedule 28.01.2015    source источник
comment
Изнутри док-контейнера (Jenkins) вы можете получить доступ к tutum.co (ping/telnet/dnslookup...). Кажется, есть какая-то проблема с DNS.   -  person Javier Cortejoso    schedule 28.01.2015
comment
Я не могу пропинговать tutum.co ни внутри контейнера, ни снаружи. Я могу пинговать www.tutum.co как внутри контейнера, так и снаружи.   -  person Johan    schedule 28.01.2015


Ответы (1)


Мне удалось решить эту проблему, изменив DNS-сервер, как подразумевал Хавьер. Docker использует DNS-сервер, указанный в /etc/resolv.conf, который указывает на 192.168.1.1. Я изменил это 8.8.8.8, и после этого я смог войти в систему.

Обновлять:

Сегодня попробовал перезаписать файл /etc/resolv.conf из Dockerfile но оказалось, что Docker устанавливает DNS при запуске контейнера. Это означает, что файл resolv.conf, который я добавил из Dockerfile, перезаписывается. Решение состоит в том, чтобы добавить --dns 8.8.8.8 при запуске контейнера. Например

docker run --dns 8.8.8.8 ubuntu:14.04 <some_command>
person Johan    schedule 28.01.2015