gom*_*sha 6 jenkins docker sonarqube
我有 2 个 docker 容器在我的 Mac 主机上运行 - 容器 1 是来自 Docker Hub 的 Jenkins,而容器 2 是来自 Docker Hub 的 SonarQube。我有两个容器成功运行。我可以通过访问从我的主机访问 Jenkins http://localhost:8080/,我可以通过访问访问我的 SonarQube http://localhost:9000/。
Jenkins 容器是这样启动的:
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:latest
Run Code Online (Sandbox Code Playgroud)
SonarQube 容器是这样启动的:
docker run -d -p 9000:9000 sonarqube
Run Code Online (Sandbox Code Playgroud)
现在我想让每个容器相互通信,所以我需要向每个容器提供另一个容器的 IP 地址。
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
Run Code Online (Sandbox Code Playgroud)
这将返回172.17.0.2Jenkins 容器和172.17.0.3SonarQube 容器的 IP 地址。但是当我尝试从我的主机访问 Jenkins 容器时,http://172.17.0.2:8080我收到请求超时。当我尝试从我的主机访问 SonarQube 容器时,会发生同样的事情http://172.17.0.3:9000
这是正常行为吗?
我不应该能够通过它们的内部 IP 地址从我的主机访问每个容器吗?
以及如何测试一个容器(例如 Jenkins)是否可以通过 IP 地址访问另一个容器(例如 SonarQube)?
看起来您正在使用默认bridge网络模型。内部 IP 旨在让每个容器在网络下相互通信bridge。您无法从主机访问它们。
有多种选择供您选择。
http://172.17.0.3:9000在 Jenkins 中配置为声纳端点。http://172.17.0.2:8000在声纳中配置为詹金斯端点。172.17.0.1) 及其internal端口进行通信。所以本质上你http://172.17.0.1也可以配置。注 - 如果您定义用户定义的桥接网络,则默认网关 IP 会发生变化。
https://docs.docker.com/v17.09/engine/userguide/networking/#the-default-bridge-network
https://docs.docker.com/network/network-tutorial-standalone/
如果您想使用 docker-compose 启动两个容器,则可以使用服务名称链接这两个容器。只需遵循Compose 中的 Networking即可。
| 归档时间: |
|
| 查看次数: |
8528 次 |
| 最近记录: |