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

标签 networking docker docker-compose

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

C1正在端口2181上监听,并且
C2正在连接端口2181

问题是C2无法在所述端口上连接到C1,我不确定为什么。

当我运行不在容​​器中的连接到C1的代码时,它工作正常。所以我知道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

最佳答案

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

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

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

修改了报价以适合此用例

Each container can now look up the hostname (i.e c2) and get back the appropriate container’s IP address. For example, c1 application code could connect to the URL //c2:2181.

关于networking - Docker容器无法连接到另一个Docker容器打开的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704582/

相关文章:

spring-boot - 如何对在Docker容器中运行的Spring Boot应用程序进行健康检查

linux - signal() 有什么作用?

docker - 将 Docker 容器导出到虚拟机的最简单方法是什么

docker - 你应该在哪里存储你的 docker 配置文件?

docker - (EACCES : permission denied, mkdir '/usr/app/node_modules/.cache) 如何创建 docker-compose 文件以使 node_modules 成为非根文件夹?

docker - dockerfile完成构建后,供应商文件夹消失

docker - 如何将我的服务公开给内部 docker 网络?

c - 如何比较c中的两个ip地址?

c# - C# 中鼠标跟随绘图

jar - 无法构建Dockerfile错误:无法访问jarfile/dev/docker-files/billing/wlp-extended-8.5.5.9.jar