Как я могу указать статический (не DHCP) DNS в моем контейнере alpine: 3.6 Docker? - PullRequest
0 голосов
/ 30 марта 2019

Я хочу выполнить Docker-контейнер в моей домашней локальной сети, но не хочу, чтобы он имел доступ к чему-либо в моей локальной сети.

На основе ответов на вопрос переполнения стека ОтключитьДоступ к локальной сети из контейнера Docker . На компьютере, на котором будет запускаться контейнер, я сделал следующее:

sudo iptables -A INPUT -i docker0 -d 192.168.0.0/16 -j DROP
sudo iptables -I FORWARD -i docker0 -d 192.168.0.0/16 -j DROP
sudo iptables -I FORWARD -i docker0 -d 192.168.0.0/16 \
    -m state --state ESTABLISHED,RELATED -j ACCEPT

Это работает.Контейнеры Docker на моей машине не видят мою локальную сеть, но они могут подключаться к Интернету.

К сожалению, они каким-то образом получают настройки DNS из DHCP моей локальной сети, и DNS указал, что мой DHCP находится в моей локальной сети.,Так что теперь они не могут разрешать имена хостов.

Как я могу переопределить настройки DNS для внешнего DNS (например: 8.8.8.8)?Для одного контейнера было бы неплохо, но для всех контейнеров Docker, работающих на этой машине, было бы еще лучше.

Мои образы Docker основаны на alpine: 3.6, на случай, если это имеет значение, и я использую версию Docker.18.09.2.

1 Ответ

0 голосов
/ 22 апреля 2019

Как указал Данила Кивер , опция --dns=8.8.8.8 для docker run может использоваться для настройки DNS для отдельного запуска образа Docker.

Если вам нужно переопределить DNS по умолчанию для всех контейнеров Docker, запускаемых локально, в том числе во время сборки, то параметры DNS можно добавить к /etc/docker/daemon.json. Например:

{
  "dns": ["8.8.8.8", "8.8.4.4"],
  "dns-search": ["your.search.domain.example.com"]
}
...