【发布时间】:2021-02-03 23:51:11
【问题描述】:
有两个容器jenkins和sonarqube都在网络ci下。
我可以使用链接主机名和公开端口从 jenkins 访问 sonarqube,但无法使用主机 ip 和发布端口访问。
# docker exec jenkins nc -zv sonarqube 9000
sonarqube (172.19.0.5:9000) open
# docker exec jenkins nc -zv PHYSICAL_HOST_IP 9000
nc: PHYSICAL_HOST_IP (PHYSICAL_HOST_IP:9000): Host is unreachable
PHYSICAL_HOST_IP 是 docker 主机(或物理机)的 IP,例如10.x.x.x.
这里是 docker-compose 配置:
docker-compose.jenkins.yml
version: '3.8'
services:
jenkins:
image: jenkinsci/blueocean
container_name: jenkins
restart: always
external_links:
- sonarqube:sonarqube
ports:
- "8080:8080"
privileged: true
networks:
- ci
networks:
ci:
external: true
docker-compose.sonarqube.yml
version: "3"
services:
sonarqube:
image: sonarqube:8.4.2-community
container_name: sonarqube
restart: always
links:
- db:db
ports:
- "9000:9000"
depends_on:
- db
networks:
- ci
environment:
- SONARQUBE_JDBC_USERNAME=user
- SONARQUBE_JDBC_PASSWORD=password
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
db:
image: postgres:12.4
container_name: postgres
restart: always
networks:
- ci
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=sonarqube
networks:
ci:
external: true
和网络ci:
[
{
"Name": "ci",
"Id": "...",
"Created": "...",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
...
},
"Options": {},
"Labels": {}
}
]
非常感谢!
【问题讨论】:
-
在你的情况下,什么是 PHYSICAL_HOST_IP ?这是:172.19.0.5?
-
@ThanhNguyenVan 不,它是 docker 主机(或物理机)的 IP,例如10.x.x.x.
-
在容器中,它不知道物理主机 ip,因此您无法 ping ro 访问它,在您的情况下,您创建了一个自定义网络,其名称为:ci