来自 Docker 容器的出站 telnet 连接被拒绝但在主机上工作正常

Outbound telnet connection from Docker container refused but works fine on host

我在通过 Tutum 托管到 AWS 的节点上遇到网络问题。

我进入节点并且运行

telnet localhost 3000

而且效果很好。当我 docker exec -it <containerid> bash 进入我的一个容器并 运行 上面的相同命令时,我收到此错误:

telnet: Unable to connect to remote host: Connection refused

谁能解释为什么不允许从容器到主机的出站连接?

您的容器使用什么网络堆栈? localhost 表示本地。在你的主机上它是主机本地接口,你的容器是它们自己的主机本地接口。因此,除非您 运行 您的容器带有 --net=host 这是一种常规行为,因为 运行ning 在 containers-localhost-ip:3000 上没有服务,但只有 host-localhost-ip:3000 是不同的。