繁体   English   中英

Windows上的Docker:如何使用容器IP从主机连接到容器?

[英]Docker on Windows: how to connect to container from host using container IP?

我有

  • Windows 10
  • 适用于Windows V.1.1.25修订版9503的Docker,它不再依赖于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。 我无法静态设置IP,这是运行静态配置的JUnit测试所必需的。 注意:启动时,我不能依靠网络DHCP来分配IP,因为我经常更改网络(因此也更改了DHCP),从而再次导致IP不固定。

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

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

你不能。 docker不是虚拟机,您无法通过IP地址访问docker主机。

在这里看到我同样的问题: 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/

如果需要使用容器中托管的应用程序,请从本地主机使用docker run -p选项公开应用程序的端口

docker run -p 8080:8080 image_name

然后连接到该服务的localhost:8080

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM