Docker переопределяет мой файл /etc/resolv.conf внутри контейнеров

Я хочу установить /etc/resolv.conf моего контейнера:

nameserver 208.67.222.222 nameserver 208.67.220.220 

Мой файл Dockerfile имеет следующую строку:

 ADD resolv.conf /etc/resolv.conf 

Этот добавленный файл содержит правильные серверы имен.

В моем файле /etc/resolv.conf моего докера содержится правильная информация.

Я запускаю контейнер следующим образом:

 docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \ -v /home/pi/share/ovpn:/ovpn \ --privileged --network=internet_disabled --name vpn-client \ --dns=208.67.222.222 \ openvpn-client_nat-gateway /bin/bash 

Несмотря на все это, контейнер дает этот результат:

 root@642b0f4716ba:/# cat /etc/resolv.conf nameserver 127.0.0.11 options ndots:0 

Это происходит только после того, как я вручную изменяю resolv.conf из контейнера (или с помощью docker exec), который выглядит правильно.

Я бы предпочел не исправлять его с помощью команды exec. У кого-нибудь есть идея, что здесь происходит?

  • Можно ли запускать скрипт при остановке контейнера докеров?
  • Docker - ПРЕДУПРЕЖДЕНИЕ: отсутствие поддержки ограничения подкачки
  • Доккер прав для моего использования?
  • Как запустить Docker daemon в автономном режиме при запуске
  • Объемы контейнеров докеров синхронизированы локально
  • Как разбирать строку для номера порта в ksh
  • Хранение файлов в репозитории git, которые должны быть владельцами root в контейнере докеров
  • X не запускается, потому что /tmp/.X11-unix/X0 - это каталог
  • 2 Solutions collect form web for “Docker переопределяет мой файл /etc/resolv.conf внутри контейнеров”

    Как я вижу, вы используете user-defined networks и версию Docker Engine> = 1.10. Таким образом, из документации официального docker engine о Embedded DNS server in user-defined networks :

    Эти –dns IP-адреса управляются встроенным DNS-сервером и не будут обновляться в файле /etc/resolv.conf контейнера.

    Ваши dns должны работать, но вы не увидите ни одного файла конфигурации.

    Ссылки .

    AFAIK, докер переопределяет некоторые файлы в изображении, когда он запущен , даже если они были добавлены в файл Dockerfile. Это наверняка включает /etc/hosts , и, скорее всего, это тоже происходит для /etc/resolv.conf . Это, по-видимому, используется для правильной сборки «внутренней» сети Docker по умолчанию (чтобы изображения смотрели друг на друга, но не на хост и т. Д.). Если вы действительно уверены, что хотите переопределить или изменить некоторые из этих файлов, я считаю, что вы должны сделайте это как часть действий во время выполнения, то есть как часть линии CMD . Например:

     ... ADD resolv.conf /etc/resolv.conf.override CMD cp /etc/resolv.conf.override /etc/resolv.conf && \ your_old_commands... 
    Interesting Posts

    Как программно получить GID работающего процесса

    Как добавить строку с пробелами в конце вывода команды

    eth0: <имя> интерфейсы в Linux

    плохой интерпретатор bash и отказано в разрешении

    создавать исполняемые файлы по трубопроводам

    Копирование / зеркальное отображение трафика на WAN-интерфейсы без поддержки «iptables tee»

    Каков правильный способ исправить ошибку configure: «Requested» libdrm_nouveau> = 2.4.33 ', но версия libdrm_nouveau равна 0.6 "?

    Как передать каталог с экранированным пространством в переменную?

    Как предотвратить KDE Konsole от захвата клавиш Ctrl / Alt / Shift + Cursor?

    Создать торрент с файлами из разных каталогов из командной строки

    Как изменить дату изменения файла?

    bash + регулярное выражение + подтверждение имени машины

    Конфигурация арки и своп-раздел

    OverlayFS – Как сделать изменения в верхней файловой системе постоянными без размонтирования?

    Перестановка «ясного подсказки» в mutt

    Linux и Unix - лучшая ОС в мире.