为便于讨论,假设我有2个服务在2个单独的容器中运行。让我们将它们分别命名为服务A和服务B。服务B托管一个Web服务,并通过-p 8080:8080使它对外界可见。外界调用该Web服务没有问题。但是,服务A还需要调用服务B托管的Web服务。这是我尝试过的:
创建网桥网络
docker network create my-network
运行连接到该网络的容器
docker run --net=my-network service-a
docker run --net=my-network -p 8080:8080 service-b
检查网络参与情况
docker network inspect my-network BOTH SERVICES CONNECTED!!
容器外部
http://127.0.0.1:8080/someMethod THIS WORKS!!!
从服务-a
http://my-network:8080/someMethod THIS DOES NOT WORK!!
答案 0 :(得分:0)
运行docker的主机的IP是什么?例如,假设它是10.0.1.5。从泊坞窗外部以及其他服务(服务a)的容器内部,您可以使用
连接到服务bhttp://10.0.1.5:8080
此外,由于您使用的是用户定义的网桥网络,如果两个容器都在同一接口上,我相信您可以使用要连接的容器的名称。
http://service-b:8080
背景:
我可能是错的,但是默认情况下,当您使用网桥网络时,主机的外部IP被“扩展”到docker。通过使用-p选项,您可以将Docker容器的端口绑定到主机。现在可以在以下位置访问该容器:
答案 1 :(得分:0)
提供了上述docker配置,以下将使其起作用:
在docker run命令中为service-b创建别名
docker run --net=my-network --network-alias service-b-hostname -p 8080:8080 service-b
引用该服务
http://service-b-hostname:8080/someMethod