[英]Docker cannot access published port from other container
有兩個容器 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.xxx
這是 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": {}
}
]
非常感謝!
請嘗試添加主機在sonar.properties文件下http.nonProxyHost
關注這兩個帖子以獲取更多詳細信息:
希望這可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.