码头集装箱无法连接到另一个码头集装箱打开的端口
问题描述:
我有两个集装箱正在运行:c1和c2。码头集装箱无法连接到另一个码头集装箱打开的端口
C1正在侦听端口2181和 C2被连接到端口2181
问题是C2未能在上述端口连接到C1,我不知道为什么。
当我运行连接到C1不在容器中的代码时,它工作正常。所以我知道C1正在运行,端口正确显示。就在我将应用程序放在它自己的容器中时,该端口不再可见。
我已经尝试了C2内的lsof,它没有列出,这对于它失败的原因很有意义。
任何线索我需要看下一个将不胜感激。
我用的是码头工人,组成这样的容器应该是相同的网络组默认情况下:
下面是我撰写的文件:
version: '2'
services:
c1:
build: .
volumes:
- .:/code
depends_on:
- c2
c2:
image: jplock/zookeeper
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
在C1,发起者是使用URI本地主机: 2181
答
如果你遇到这个帖子,这可能会有所帮助。
使用泊坞窗,撰写,容器获取设置主机名匹配泊坞窗撰写文件中的服务别名,请参阅文档在这里:
https://docs.docker.com/compose/networking/
修改报价,以适应这个用例
每个容器现在可以查找主机名(即c2)并获取适当的容器的IP地址。例如,c1应用程序代码可以连接到URL // c2:2181。
向我们展示您的代码?不是全部,但足以准确地重现问题。具体来说,你用什么地址连接到第二个容器? – larsks
啊,说说你应该使用compose文件中列出的容器名来代替主机名。我仍然参考localhost。我会尝试一下,并会让你知道。 – JamesC
谢谢拉尔斯克你帮我到那里。 – JamesC