我有
我在Docker镜像中运行了一些JBoss实例(172.18.0.2是一个数据库):
应该同时运行。 每个JBoss实例导出例如它的8787,8080和8443端口。
我也创build了桥接networking:dockernetworking创build – 驱动程序桥 – 子网172.18.0.0/24 bridged_network
目前,我已经设置了本地端口转发,使得主机可以使用前缀访问各种服务(例如,当访问实例1的端口8080时,主机使用localhost:28080连接)。 但是这很容易出错。
现在,我想使用容器的IP从主机访问这些端口,例如调用172.18.0.4:8080(下一步:使用主机名:jboss-eap-arquillian:8080)。 虽然这从容器到容器工作正常,但我还是无法将其设置为从主机连接。
有Windowsnetworking接口(types:DockerNAT),具有IP 10.0.75.1,但可能我已经手动创build它(不确定…已经尝试相当一段时间了)。 但是,当绑定容器的端口到这个设备,如docker run … -p 10.0.75.1:8080:8080,这是有帮助的。 然后我可以调用服务使用10.0.75.1:8080,但是这并不帮助我的第二个容器。
我也试过使用Docker的主机networking设备,但是那个。 似乎只适用于一台机器b。 我无法静态设置运行静态configuration的JUnittesting所需的IP。 注意:我不能依赖networkingDHCP在启动时分配一个IP,因为我经常更换我的networking(因此DHCP),导致一个不固定的IP。
所以基本上我正在寻找一种方式来设置networking/容器的方式,我可以使用容器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
你不能。 码头不是一个虚拟机,你不能通过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/
如果您需要使用托管在容器中的应用程序,请从localhost使用docker run
的-p
选项公开应用程序的端口
docker run -p 8080:8080 image_name
然后连接到该服务的localhost:8080