为了便于讨论,假设我有两个码头容器,容器A和容器B。容器A有一个在其中运行的服务(服务A)。类似地,容器B有一个在其中运行的服务(服务B)。服务B在端口8082上公开了一个web服务接口,我们有一个端口映射-p 8082:8082,这样外部世界就可以对服务B(例如http://some_ip:8082/somemethod)进行web服务调用。然而,让我们假设服务A需要对服务B进行相同的web调用,这将如何实现?这有可能吗?
注意:我不喜欢Docker Compose的解决方案。这本质上需要多个容器对其他容器有深入的了解。此外,它要求所有容器都托管在同一个Docker引擎中。这在现实世界中是行不通的。容器A归组织A所有,容器B归组织B所有。我可以从外部世界访问在容器B中运行的web服务,但我不能从容器A访问相同的web方法。
发布于 2019-05-10 22:33:13
最简单的选择:您可以使用Docker Compose,它在容器之间进行服务,因此您可以通过到达creates a network B: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/
https://stackoverflow.com/questions/56079646
复制相似问题