Как заставить Docker разрешать хост DMZ?

Представьте, что у меня есть такая настройка:

  • Сервер приложений
    • Частный IP: 1.0.0.1 ; Частное имя хоста: machine1.internal.domain
    • Общедоступный IP-адрес: 2.0.0.1 ; Общедоступное имя хоста: machine1.example.com
  • Сервер базы данных.
    • Частный IP: 1.0.0.2 ; Частное имя хоста: machine2.internal.domain
    • Общедоступный IP-адрес: 2.0.0.2 ; Общедоступное имя хоста: machine2.example.com

Эти 2 машины находятся в DMZ.

Machine1 необходимо подключиться к machine2, используя внутреннее имя хоста. Важно одно: мы не хотим, чтобы трафик между ними выходил за пределы DMZ. И имя хоста machine2.internal.domain жестко запрограммировано в приложении, работающем на машине № 1.

Без установки Dockerized:

  • Случай № 1: Если разрешение имен работает для machine2.internal.домен , все уже хорошо.
  • Случай №2: В противном случае я бы добавил запись в / etc / hosts в machine1: machine2.internal.domain 1.0.0.2

При настройке Dockerized я знаю, что когда разрешение имен не работает, контейнер Docker не может связаться с машиной2, поскольку он не наследует записи в / etc / hosts хост-машины.

Как я могу это сделать вещь работает лучше всего? ... для обоих случаев: разрешение DNS работает и не работает.

Я рассмотрел следующие варианты для случая 2:

  • Передача IP-адреса машины2 в контейнер Docker на машине1: docker run --add-host machine2.internal.domain: 1.0.0.2 ...
    • Мне нужно определить IP-адрес machine2.internal.domain дважды: один раз в / etc / hosts и один раз в Docker выполнить команду
  • Отсутствие локализации сети для контейнера на машине1: docker blabla --net = host
    • Это кажется неправильным, хотя я не могу сказать, какими будут последствия.
1
задан 1 February 2016 в 01:16
1 ответ

Если у вас есть внутренний DNS-сервер, вы можете запустить ваше докерное приложение с опцией --dns=[].

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

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

Третий способ - это рассмотреть использование чего-то вроде парашютов. Если ваши докер-хосты работают под управлением CoreOS или если у вас есть кластер etcd2, который тоже будет работать.

На сегодняшний день лучший вариант - это чтобы ваши хосты работали через какой-нибудь механизм обнаружения, где что-то есть, и не полагались на DNS. Однако, обычно требуется что-то вроде etcd2 или Consul

.
0
ответ дан 4 December 2019 в 06:40

Теги

Похожие вопросы