Docker 容器无法从 Ubuntu 主机外部访问?

Docker 容器无法从 Ubuntu 主机外部访问?

我有一个已发布端口 3001 的 docker 容器。我可以通过从主机 ping 来连接到该 docker 容器

$ netcat -vzn 0.0.0.0 3001
Connection to 0.0.0.0 3001 port [tcp/*] succeeded!

但是从主机外部来看,我得到了拒绝连接的信息。

$ netcat -vzn 10.0.0.154 3001
netcat: connect to 10.0.0.154 port 3001 (tcp) failed: Connection refused

Docker容器已发布的端口:

PORTS
0.0.0.0:3001->3001/tcp, :::3001->3001/tcp

主机防火墙已禁用。

主机是运行 Ubuntu 的物理服务器。

即使直接在主机网络上运行,容器也无法访问......

docker run -it -d -network=host ...

我已阅读所有文档,根据每条说明,在当前设置下,容器应该可以通过 hostIp:port 访问。我不确定 Docker 说明中是否还遗漏了其他内容,或者 Ubuntu Server OS 本身是否出现了问题,导致拒绝这些连接。

有什么想法吗?谢谢!

答案1

我遇到了完全相同的问题,但我不是 100% 确定,但 ubuntu 中仍然有一些规则可以阻止名为 iptables 的端口。您nmap localhost可以查找哪些端口是开放的。

答案2

所以我明白发生了什么事...

虽然docker端口实际上在主机上正确暴露,但容器内应该监听这些端口的应用程序启动时间比我想象的要长。过了一会儿,docker容器内的应用程序终于启动了,然后就可以从主机外部访问端口了。

相关内容