【发布时间】:2019-05-28 06:39:26
【问题描述】:
我的 Mac 主机上运行了 2 个 docker 容器 - 容器 1 是 Jenkins from Docker Hub,容器 2 是 SonarQube from Docker Hub。我有两个容器成功运行。我可以通过转到 http://localhost:8080/ 从我的主机访问 Jenkins,我可以通过转到 http://localhost:9000/ 访问我的 SonarQube。
Jenkins 容器是这样启动的:
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:latest
SonarQube 容器是这样启动的:
docker run -d -p 9000:9000 sonarqube
现在我想让每个容器相互通信,所以我需要向每个容器提供另一个容器的 IP 地址。
我通过执行这个得到了IP address of each container:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
这将为 Jenkins 容器返回 IP 地址 172.17.0.2,为 SonarQube 容器返回 172.17.0.3。但是,当我尝试通过转到http://172.17.0.2:8080 从我的主机访问 Jenkins 容器时,我得到一个请求超时。当我尝试通过转到 http://172.17.0.3:9000 来从主机访问 SonarQube 容器时,也会发生同样的事情
这是正常行为吗?
难道我不能通过它们的内部 IP 地址从我的主机访问每个容器吗?
我如何测试一个容器(例如 Jenkins)是否可以通过 IP 地址访问另一个容器(例如 SonarQube)?
【问题讨论】: