2016-12-30 12 views
6

У меня естьДокер в Windows: как подключиться к контейнеру из хоста с использованием контейнера IP?

  • для Windows 10
  • Docker для Windows, В. 1.12.5 Rev. 9503, который не опирается на boot2docker или VirtualBox больше.

У меня есть несколько экземпляров JBoss работающих в Докер изображений (172.18.0.2 является базой данных):

  • экземпляр 1: Имя: JBoss-еар, IP: 172.18.0.3
  • экземпляра 2: имя: jboss-eap-arquillian, IP: 172.18.0.4

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

Я также создал мостовые сети: докер сети создать --driver моста --subnet 172.18.0.0/24 bridged_network

В настоящее время я поставил локальное перенаправление портов такого, что хозяин может получить доступ к различные сервисы с использованием префикса (например, при доступе к порту экземпляра 1 808, хост использует localhost: 28080 для подключения). Но это довольно склонно к ошибкам.

Теперь я хочу получить доступ к этим портам от хоста, используя IP-адрес контейнера, например. вызов 172.18.0.4:8080 (следующий шаг: использование имени хоста: jboss-eap-arquillian: 8080). Хотя это работает плавно из контейнера в контейнер, я не смог настроить его для соединения с хостом.

Существует сетевой интерфейс Windows (тип: DockerNAT), имеющий IP 10.0.75.1, но возможно, что я создал его вручную (неуверенный ... пробовал уже довольно давно). Но это полезно при привязке порта контейнера к этому устройству, например. docker run ... -p 10.0.75.1:8080:8080. Затем я могу позвонить службе, используя 10.0.75.1:8080, но это не помогает мне для второго контейнера.

Я также пытался использовать хост-сетевое устройство Docker, но это a. похоже, работает только для одной машины б. Я не могу статически устанавливать IP-адрес, который необходим для тестов JUnit, запускающих статическую конфигурацию. Примечание. Я не могу полагаться на сетевой DHCP, чтобы назначать IP при запуске, поскольку я часто меняю свою сеть (и, следовательно, DHCP), в результате чего снова возникает незафиксированный IP-адрес.

Итак, в основном я ищу способ настроить сеть/контейнер таким образом, чтобы я мог вызвать услугу, предоставляемую контейнером (например, на порту 8080), используя IP-адрес контейнера (например, 172.18.0.3 например 1) от хоста с использованием 172.18.0.3:8080.

+0

вы знаете, что это не докер способ и перерывы портативность. Кажется, вам нужна виртуальная машина, почему бы просто не использовать vm? – user2105103

ответ

0

вы не можете. docker не является виртуальной машиной, и вы не получаете доступ к хосту докера через IP-адрес.

видеть мой же вопрос здесь: https://forums.docker.com/t/access-dockerized-services-via-the-containers-ip-address/21151

и мое осознание того, как это работает, здесь: https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/

, если вам нужно использовать приложение размещенного в контейнере, с вашего локального хоста, выставить порт приложение с -p опцией docker run

docker run -p 8080:8080 image_name

, а затем подключить к localhost:8080 е или что служба

4

На докер для окон вы можете использовать адрес 10.0.75.1:8080, но вам нужно настроить брандмауэр, лучший способ использует адрес 10.0.75.2:8080,

обоих адресов вы должны опубликовать свой порт при запуске контейнера

docker run -p 8080:8080 image_name 

Подробнее https://github.com/docker/for-win/issues/334#issuecomment-297030101

 Смежные вопросы

  • Нет связанных вопросов^_^