我有
我有很多在Docker镜像中运行的JBoss实例(172.18.0.2是一个数据库):
应该同时运行。每个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,但我可能手动创建它(不确定......现在已经尝试了很长时间)。但是,当将容器的端口绑定到此设备时,这很有用,例如码头运行... -p 10.0.75.1:8080:8080。然后,我可以使用10.0.75.1:8080调用该服务,但这对第二个容器没有帮助。
我也尝试过使用Docker的主机网络设备 一个。似乎只适用于一台机器 湾我无法静态设置IP,这是运行静态配置的JUnit测试所需的。 注意:我不能依赖网络DHCP在启动时分配IP,因为我经常更改我的网络(以及DHCP),导致再次出现不固定的IP。
所以基本上我正在寻找一种以这种方式设置网络/容器的方法,我可以使用容器IP(例如172.18.0.3)调用容器提供的服务(例如,在端口8080上)实例1)来自主机使用172.18.0.3:8080。
答案 0 :(得分:9)
在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
答案 1 :(得分:0)
在此处查看我的同一问题: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/
如果您需要使用容器中托管的应用程序,请使用$1
-p
docker run
选项来展示应用程序的端口
docker run -p 8080:8080 image_name
然后连接到该服务的localhost:8080