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. У кого-нибудь есть идея, что здесь происходит?

  • Как я могу разрешить pgrouting с включенным postgresql и postgis?
  • создание докерных изображений делает Vagox-управляемым VBox замораживанием
  • Объемы контейнеров докеров синхронизированы локально
  • Когда и почему я должен использовать обновление apt-get?
  • Можно ли запускать скрипт при остановке контейнера докеров?
  • Утилита настройки хранилища докеров отсутствует в версии 1.11.x
  • Извлечь файл из изображения докеров?
  • Как запустить определенную архитектуру (32/64) Python в Centos6, когда оба установлены?
  • 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... 
    Linux и Unix - лучшая ОС в мире.