在Docker容器中运行的服务调用在另一个Docker容器中在另一个服务中运行的Web服务

时间:2019-05-10 14:26:24

标签: docker networking

为了争辩,可以说我有2个docker容器,分别是容器A和容器B。容器A有一个在其中运行的服务(服务A)。类似地,容器B具有在其内部运行的服务(服务B)。服务B在端口8082上公开了一个Web服务接口,并且我们有一个端口映射-p 8082:8082,以便外界可以对服务B进行Web服务调用(例如http://some_ip:8082/somemethod)。但是,假设服务A需要对服务B进行相同的Web调用。这将如何实现?这有可能吗?

注意:我不喜欢Docker Compose的解决方案。这本质上需要多个容器对其他容器有深入的了解。此外,它要求所有容器都托管在同一个Docker引擎中。这在现实世界中行不通。容器A由组织A拥有,容器B由组织B拥有。我可以从外部访问容器B中运行的Web服务,但是我不能从容器A访问相同的Web方法。这不好完全没有。

1 个答案:

答案 0 :(得分:-1)

最简单的选择:您可以在容器之间使用Docker Composecreates a network,以便通过到达serviceB:8082从服务A进行呼叫。例如,您的docker-compose.yml如下所示:

serviceA:
    image: myImage

serviceB:
    image: myOtherImage
    ports:
        - "8082:8082"

没有docker-compose,您可以手动创建网络并连接容器:

docker network create myNetwork
# create containers for serviceA and serviceB...
docker network connect myNetwork serviceA
docker network connect myNetwork serviceB

然后,您的容器将可以通过IP地址或其别名相互访问。有关网络的更多信息,请点击此处:https://docs.docker.com/network/bridge/