【问题标题】:Docker cannot access published port from other containerDocker 无法从其他容器访问已发布的端口
【发布时间】: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

标签: docker jenkins sonarqube


【解决方案1】:

请尝试在http.nonProxyHost下的sonar.properties文件中添加主机

关注这两个帖子了解更多详情:

  1. https://github.com/SonarSource/docker-sonarqube/issues/150
  2. https://community.sonarsource.com/t/http-nonproxyhosts-has-no-effect-webhook-delivery-failing-ce-7-9-1-build-27448/17630

希望这可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 2021-12-10
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多