Очень распространенная ошибка заключается в том, что демон docker не может подключиться к внешнему миру, чтобы загрузить что-либо во время сборки.
Это можно исправить несколькими способами.
Ошибка обычно возникает при попытке собрать образ docker.
Предупреждение “[Warning] IPv4 forwarding is disabled. Networking will not work.” говорит о том, что необходимо включить переадресацию IPv4.
Step 10 : RUN set -x && pip install -U pip setuptools && pip install -r /tmp/requirements/dev.txt ... ---> [Warning] IPv4 forwarding is disabled. Networking will not work. ---> Running in b4b9fb134518 + pip install -U pip setuptools Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by NewConnectionError(Failed to establish a new connection: [Errno -2] Name or service not known,): /simple/pip/
Сначала настройте конфигурационный файл демона docker так, чтобы в нем был доступен один или два DNS-сервера для выполнения запросов:
$ cat /etc/docker/daemon.json
{
"dns": ["10.1.1.254","8.8.8.8","10.115.1.220"],
"live-restore": true
}
Выше видно, что у меня есть несколько локальных (intranet vpn) серверов имен, а также DNS-сервер Google 8.8.8.8.
Далее этого необходимо включить перезапуск демона docker (systemctl restart docker), но мы подождем завершения следующего шага, прежде чем выполнять перезапуск демона.
Теперь необходимо включить переадресацию между интерфейсами в ядре.
Для этого используется параметр sysctl net.ipv4.ip_forward.
Его можно задать один раз из командной строки, но при перезагрузке системы он не будет сохранен, поэтому я задал его в файле sysctl docker:
$ cat /usr/lib/sysctl.d/99-docker.conf
fs.may_detach_mounts=1
net.ipv4.ip_forward=1
Это позволит устанавливать переменную net.ipv4.ip_forward в true при каждом запуске или перезапуске демона docker.
Теперь мы можем выполнить перезапуск и убедиться, что оба изменения включены.
$ sudo systemctl restart docker
см. также:
- 🐳 Как проверить, работает ли ваше приложение в Docker или Kubernetes
- 🐳Как удалить программное обеспечение docker.io на Ubuntu
- 🐳 Разница между ENTRYPOINT и CMD в Dockerfile
- 🐳 Как проверить версию Docker приложения