Docker容器无法连接到另一个docker容器打开的端口

时间:2016-08-01 17:17:39

标签: networking docker docker-compose

我有两个容器正在运行:c1和c2。

C1正在侦听端口2181和 C2正在连接到端口2181

问题是C2无法连接到所述端口上的C1,我不确定原因。

当我在容器中运行连接到C1 NOT的代码时,它工作正常。所以我知道C1正在运行并且端口正确暴露。就在我将应用程序放入其自己的容器中时,该端口不再可见。

我在C2中尝试了lsof并且没有列出,这对它失败的原因有意义。

我需要了解下一步需要了解的地方。

我使用的是docker-compose,所以默认情况下容器应该在同一个网络组中:

这是我的撰写文件:

version: '2'
services:
  c1:
    build: .
    volumes:
      - .:/code
    depends_on:
      - c2
  c2:
    image: jplock/zookeeper
    ports:
       - "2181:2181"
       - "2888:2888"
       - "3888:3888"

在C1中,启动器使用URI localhost:2181

1 个答案:

答案 0 :(得分:2)

如果你遇到这篇文章,这可能会有所帮助。

使用docker-compose,容器设置一个与docker compose文件中的服务别名匹配的主机名,请参阅此处的文档:

https://docs.docker.com/compose/networking/

修改后的引用以适应此用例

  

现在每个容器都可以查找主机名(即c2)并获取相应容器的IP地址。例如,c1应用程序代码可以连接到URL // c2:2181。