у меня есть
- Windows 10
- Docker для Windows V. 1.12.5 Rev. 9503, который больше не зависит от boot2docker или VirtualBox.
У меня есть несколько экземпляров JBoss, работающих в образах Docker (172.18.0.2 — это база данных):
- экземпляр 1: имя: jboss-eap, IP: 172.18.0.3
- экземпляр 2: имя: jboss-eap-arquillian, IP: 172.18.0.4
которые будут работать одновременно. Каждый экземпляр JBoss экспортирует, например. его порты 8787, 8080 и 8443.
Я также создал мостовую сеть: docker network create --driver bridge --subnet 172.18.0.0/24 bridged_network
В настоящее время я настроил переадресацию локального порта, чтобы хост мог получать доступ к различным службам с помощью префикса (например, при доступе к порту 8080 экземпляра 1 хост использует localhost: 28080 для подключения). Но это довольно подвержено ошибкам.
Теперь я хочу получить доступ к этим портам с хоста, используя IP-адрес контейнера, например. вызов 172.18.0.4:8080 (следующий шаг: использование имени хоста: jboss-eap-arquillian:8080). Хотя это работает гладко от контейнера к контейнеру, я не смог настроить его для подключения с хоста.
Есть сетевой интерфейс Windows (типа: DockerNAT), имеющий IP 10.0.75.1, но, возможно, я создал его вручную (не уверен... уже довольно давно пытаюсь). Но это полезно при привязке порта контейнера к этому устройству, например. запуск докера... -p 10.0.75.1:8080:8080. Затем я могу вызвать службу, используя 10.0.75.1:8080, но это не поможет мне для второго контейнера.
Я также пытался использовать хост-сетевое устройство Docker, но это a. кажется, работает только для одной машины b. Я не могу статически установить IP-адрес, который необходим для тестов JUnit, выполняющих статическую конфигурацию. Примечание. Я не могу полагаться на сетевой DHCP для назначения IP-адреса при запуске, поскольку я часто меняю свою сеть (и, следовательно, DHCP), что снова приводит к незафиксированному IP-адресу.
Итак, в основном я ищу способ настроить сеть/контейнер таким образом, чтобы я мог вызывать службу, предоставляемую контейнером (например, через порт 8080), используя IP-адрес контейнера (например, 172.18.0.3, например 1) с хоста по адресу 172.18.0.3:8080.