我有

  • Windows 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 网络接口(interface)(类型:DockerNAT),IP 为 10.0.75.1,但有可能是我手动创建的(不确定……已经尝试了很长时间了)。但这在将容器的端口绑定(bind)到此设备时很有帮助,例如 docker 运行... -p 10.0.75.1:8080:8080。然后我可以使用 10.0.75.1:8080 调用该服务,但这对第二个容器没有帮助。

    我也尝试使用 Docker 的主机网络设备,但是
    一种。似乎只适用于一台机器
    湾我无法静态设置 IP,这是运行静态配置的 JUnit 测试所必需的。
    注意:我不能依赖网络 DHCP 在启动时分配 IP,因为我经常更改我的网络(以及 DHCP),再次导致不固定的 IP。

    所以基本上我正在寻找一种方法来设置网络/容器,以便我可以使用容器 IP(例如 172.18.0.3,例如 1)调用容器提供的服务(例如在端口 8080 上)来自使用 172.18.0.3:8080 的主机。

    最佳答案

    在 docker for windows 上,您可以使用地址 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

    关于windows - Windows 上的 Docker : how to connect to container from host using container IP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41400043/

    10-15 09:31