0

Docker проблема с DNS

Если у вас возникли трудности при установке docker на CentOS 8 прочитайте данную статью.

Появилась необходимость собрать образ с установкой зависимостей для python. Зависимости описаны в файле requirements.txt и должны подтягиваться из сети. Однако, при сборке образа получил ошибку следующего вида:

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd0844380f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)'

Данная ошибка говорит о том, что docker не может разрешить доменное имя для установки соединения с удаленным сервером. Выполнив проверку в busybox (если образ отсутствует в вашем локальном репоизтории, docker автоматически скачает его) видим, что днс действительно не работает:

# docker run busybox nslookup google.com
;; connection timed out; no servers could be reached

Docker проблема с DNS – исправление ошибки

Чтобы в docker проблема с dns больше не возникала, необходимо указать днс-сервер в настройках самого докера. Для этого откроем конфигурационный файл docker:

# nano /etc/docker/daemon.json

Если файл ещё не существует, то редактор автоматически создаст его.

Теперь укажем днс-сервер, например от google:

{
    "dns": ["8.8.8.8"]
}

И перезагрузим docker:

# systemctl restart docker

Проверим и убедимся, что все работает:

# docker run busybox nslookup google.com
Server:         8.8.8.8
Address:        8.8.8.8:53

Non-authoritative answer:
Name:   google.com
Address: 64.233.163.113
Name:   google.com
Address: 64.233.163.101
Name:   google.com
Address: 64.233.163.102
Name:   google.com
Address: 64.233.163.139
Name:   google.com
Address: 64.233.163.100
Name:   google.com
Address: 64.233.163.138