2017-01-03 1 views
1

У меня есть хост-машина с разрешением некоторых хостов, определенная в файле/etc/hosts.Хост карты/etc/hosts в контейнере Docker, имеющем мостовую сеть

На этой машине я запускаю контейнеры для докеров, сконфигурированные сетью Bridge.
Поскольку я не в сети хоста, у моих контейнеров Docker нет доступа к определениям хостов моего файла machine/etc/hosts.

К сожалению, с DNS это не вариант на данный момент.

Мой вопрос в том, как я могу использовать эти определения в своих контейнерах с использованием мостовой сети? Я прочитал, что сбор файлов hosts/etc/hosts в контейнере не является хорошим выбором, поскольку он обрабатывается внутренним деканом докера.
Знаете ли вы, как еще я могу это достичь?

+0

это возможно? скопируйте хост/etc/hosts в контейнер/tmp/foo, затем добавьте/tmp/foo в контейнер/etc/hosts – dormi330

ответ

2

У вас есть 2 варианта

docker run -v /etc/hosts:/etc/hosts <yourimage>

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

Таким образом, я бы

docker run -v /etc/hosts:/tmp/hosts <yourimage>

и использовать точку входа в ваш образ, который делает что-то среди этих линий

cat /tmp/hosts >> /etc/hosts

а) Вы хотите, чтобы отфильтровать некоторые строки, как localhost или выберите определенные строки, используя grep b) Вы хотите, чтобы вы не повторяли это в каждом загрузочном контейнере, поэтому напишите семафор или аналогичный файл (c, c heck file whatever)

0

Я думаю, что лучше использовать параметр командной строки --add-host, чтобы добавить записи в контейнер /etc/hosts.

Вот отрывок из official Docker Reference

Управление /etc/hosts

Ваш контейнер будет иметь строки в/и т.д./хостов, которые определяют имя хоста самого контейнера, а также локальный и несколько других общих вещей. Флаг -add-host может использоваться для добавления дополнительных строк в /etc/hosts.

$ docker run -it --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts 
172.17.0.22  09d03f76bf2c 
fe00::0   ip6-localnet 
ff00::0   ip6-mcastprefix 
ff02::1   ip6-allnodes 
ff02::2   ip6-allrouters 
127.0.0.1  localhost 
::1    localhost ip6-localhost ip6-loopback 
86.75.30.9  db-static 
Смежные вопросы