Docker Mac альтернатива --net = host - PullRequest
0 голосов
/ 28 сентября 2018

Согласно документации докера здесь

https://docs.docker.com/network/host/

Сетевой драйвер хоста работает только на хостах Linux и не поддерживается в Docker для Mac, Docker для Windows,или Docker EE для Windows Server.

На Mac какие альтернативы используют люди?

Мой сценарий

  1. Я хочу запустить докер-контейнер, который 'Будет ли размещаться микро-сервис
  2. Микро-сервис зависит от баз данных, которые я также запускаю через docker
  3. Я думал, что смогу использовать --net = host на Macпри запуске микро-службы
  4. Но порт микро-службы не отображается
  5. Я могу переопределить адреса БД (по умолчанию это localhost) на микросервисе.
  6. Нокоторый включает в себя надежное использование --env

Какое самое простое / элегантное решение?

1 Ответ

0 голосов
/ 28 сентября 2018

Самое простое и элегантное решение - использовать докер с именем bridge network.Вы можете создать собственную мостовую сеть (по умолчанию это мост), например:

docker network create my-network

Каждый контейнер, развернутый в этой сети, может взаимодействовать друг с другом, используя имя контейнера.

$ docker run --network=my-network --name my-app ...
$ docker run --network=my-network --name my-database...

В приведенном выше примере вы можете подключиться к вашей базе данных из приложения, используя my-database:port.Если порт контейнера открыт в Dockerfile, вам не нужно отображать его на вашем хосте, и вы можете хранить все ваши внутренние коммуникации внутри вашей настраиваемой сети Docker Bridge.

В большинстве случаев приложению сопоставляется его порт (пример: -p 80:80), поэтому localhost:80 сопоставляется с container:80, и вы можете получить доступ к приложению с локального хоста.Если приложению необходимо обмениваться данными с БД, вам не нужно указывать порт БД, и вам не нужно отображать его на localhost, как описано выше.Просто сохраняйте связь между приложением и внутренней базой данных в своей пользовательской мостовой сети.

...