Docker在不同容器中的通信

时间:2016-12-13 20:58:14

标签: docker docker-networking

我一直在寻找这个答案。对我而言,这似乎是一个显而易见的问题,然而,我的答案已经没有了。

我目前的设置是,我在同一个网桥上有redis,mongodb和两个api服务器。第一个服务器充当执行所有auth的网关api,并公开某些api调用。后端api是处理所有数据库交互和数据调整的API。如果我单独点击后端(内部)api,我就能看到内容(这个api不会在真实的生产环境中暴露)。但是,如果我从网关api中发出相同的请求,我无法点击后端(内部)api,它也是我创建的桥接网络的一部分。

下面是容器交互的图表。

Docker container interaction

1 个答案:

答案 0 :(得分:0)

我仍然使用传统链接,但我对此有点熟悉。我认为问题是你正试图击中" localhost"从您的网关容器内部。内部API容器无法解析为" localhost"在网关API容器内部。你可以点击" localhost:8099"从主机或外部因为端口映射,但您的其他容器都不能解析该地址/端口,因为他们认为'它是一台远程机器。

这是一种测试我所思考的方法。在主机的shell中,运行显示here的bridge inspect命令。从Containers<inner-api-hash>IPV4复制IP地址。然后使用docker exec -it <gateway-id> /bin/bash在网关容器中打开一个shell,然后使用curlwget查看是否可以访问您复制的IP地址。

如果我的想法是正确的,您将看到必须使用内部API节点的Docker为其他容器分配的IP地址。在其他选项中,您可以使用静态IP地址启动容器,如here所示。

这开始超出我的知识范围,但您也可以配置容器DNS。 Configure container DNS