我正在调查一个问题,即我无法在新安装的 Linux Ubuntu 22 计算机上通过暴露的端口 80 或 8080 连接到 docker 容器。相反,每个请求都会挂起。
所以我重新启动了机器并停止了 nginx 和 docker 等所有服务。没有任何内容正在侦听特定端口。
curl http://0.0.0.0:8000
:
正如预期的那样,它打印了
curl: (7) 0 毫秒后无法连接到 0.0.0.0 端口 8000: 连接被拒绝
但是,
curl http://localhost:8000
会导致卷曲永远挂起。
当我这样做时
ping localhost
,它显示它解析为127.0.0.1(如预期)
并且
curl http://127.0.0.1:8000
也无法连接:
curl: (7) 0 ms后无法连接到127.0.0.1端口8000: 连接被拒绝
netstat -l -p
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN -
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN -
tcp6 0 0 [::]:ssh [::]:* LISTEN -
udp 0 0 localhost:domain 0.0.0.0:* -
udp 0 0 Ubuntu-2204-jammy-a:ntp 0.0.0.0:* -
udp 0 0 localhost.localdoma:ntp 0.0.0.0:* -
udp 0 0 0.0.0.0:ntp 0.0.0.0:* -
udp6 0 0 Ubuntu-2204-jammy-a:ntp [::]:* -
udp6 0 0 Ubuntu-2204-jammy-a:ntp [::]:* -
udp6 0 0 [::]:ntp [::]:* -
raw6 0 0 [::]:ipv6-icmp [::]:* 7 -
这可能是什么?
我可以自己回答。正如我的 Reddit 帖子上乐于助人的人所指出的,这是由于
iptables
。
一旦 iptables 启动,docker 的情况就不太好了。
我找到了一篇博文,描述了如何与 docker 结合设置 iptables:
https://blog.jarrousse.org/2023/03/18/how-to-use-ufw-firewall-with-docker-containers/