桥接的Docker容器之间的Web调用

时间:2019-05-10 17:10:47

标签: docker networking

为便于讨论,假设我有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!!

2 个答案:

答案 0 :(得分:0)

运行docker的主机的IP是什么?例如,假设它是10.0.1.5。从泊坞窗外部以及其他服务(服务a)的容器内部,您可以使用

连接到服务b
http://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