如何通过主机的主机名从另一个容器到达一个容器?

How do I reach a container through the host's hostname from another container?

我是 运行 docker 20.10 和 docker-compose 1.29.2 on Centos 7.

我在 myhost 上使用 docker-compose 有两个容器(bitbucket 和 jenkins)运行。我正在使用默认的 bridge 网络。以下是主机名和服务:

host        : service/port   : container/host port mapping
myhost      : apache/80      : <na>
bitbucket   : bitbucket/7990 : 7990:7990
jenkins     : jenkins/8083   : 8083:8083
workstation : <na>           : <na>

workstation,我从 curl myhost:80 获得结果,从 curl myhost:7990 获得结果。

jenkins 我从 curl bitbucket:7990curl myhost:80 得到结果,但问题是我 curl myhost:7990

我需要能够从 bitbucket 中的 jenkins 访问子模块,并且我希望 .gitmodules 文件引用相同的子模块 URL: myhost:7990/scm/project/repo.

我在 myhost 上没有任何特殊的网络配置。我尝试将 7990 添加到 docker 区域 (firewall-cmd),但这没有帮助。

它似乎几乎 正常工作。这里的问题和解决方法是什么?

谢谢!

尝试使用容器的私有IP。如果他们在同一个网络中,它应该可以工作。

docker inspect <container ID> | grep -w -m1 "IPAddress"

<private IP>:7990/scm/project/repo

What is the problem and solution here?

尝试在您的 docker-compose 的服务中添加 link,这样它将 link 两个不同的 containers

  • 链接允许您定义额外的别名,通过这些别名可以从另一个服务访问一个服务。