我有
- 视窗 10
- Docker for Windows V. 1.12.5 Rev. 9503,不再依赖 boot2docker 或 VirtualBox。
我有许多在 Docker 映像中运行的 JBoss 实例(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
目前,我已经设置了一个本地端口转发,以便主机可以使用前缀访问各种服务(例如,当访问实例 1 的端口 8080 时,主机使用 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 的主机网络设备,但那是一个。似乎只适用于一台机器 b. 我无法静态设置运行静态配置的 JUnit 测试所需的 IP。注意:我不能依赖网络 DHCP 在启动时分配 IP,因为我经常更改我的网络(因此 DHCP),导致再次出现不固定的 IP。
所以基本上我正在寻找一种方法来设置网络/容器,我可以使用容器 IP(例如 172.18.0.3 例如 1)调用容器提供的服务(例如在端口 8080 上)从使用 172.18.0.3:8080 的主机。