我在 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 端口。我希望它只能在本地访问,然后将其设置在反向代理后面。谢谢。