无法从主机 ping 通 Docker 容器内的服务

无法从主机 ping 通 Docker 容器内的服务

我在 Ubuntu 20.04 上运行一个容器docker-compose,但我无法从运行 docker 的主机 ping 或 curl 内部运行的 Web 服务器。

我已经为容器提供了一个静态 IP,如果我在容器中打开一个 shell,我可以看到服务运行良好,并且按预期对其进行卷曲。

我的 docker-compose.yml 如下所示:

version: "2.1"
services:
  container:
    image: imagename
    container_name: container
    networks:
      net:
        ipv4_address: 172.20.0.5
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    ports:
      - 9000:9000
    restart: unless-stopped

networks:
  net:
    driver: bridge
    ipam:
     config:
       - subnet: 172.20.0.0/16
         gateway: 172.20.0.1

但如果我curl -v 172.20.0.5:9000从同一台机器上得到

*   Trying 172.20.0.5:9000...
* TCP_NODELAY set
* connect to 172.20.0.5 port 9000 failed: No route to host
* Failed to connect to 172.20.0.5 port 9000: No route to host
* Closing connection 0
curl: (7) Failed to connect to 172.20.0.5 port 9000: No route to host

我最好的猜测是与 iptables 或防火墙规则有关?我根本没有从默认的 Docker 设置中更改它们。在host网络模式下它确实可以工作,但会公开 9000 端口。我希望它只能在本地访问,然后将其设置在反向代理后面。谢谢。

相关内容