我在通过tcp连接docker容器时遇到了奇怪的问题。
我的操作系统是Ubuntu 20.04。
我的操作步骤如下:
我在容器中启动了我的Web服务器。我尝试过官方的Postgresql镜像,但问题仍然存在。因此,问题可能不在于我的镜像。
服务器监听0.0.0.0上的8080端口。我已经多次更改了端口,所以问题不仅局限于8080端口。
我将8080容器端口转发到主机的8080端口。我尝试了将转发到不同端口,但问题仍然存在。
以下是命令:
docker run --rm --name my-web-container -p8080:8080 my-web-image
我尝试使用wget localhost:8080命令,它会停止一段时间,然后显示:
Connection closed by foreign host.
telnet localhost 8080可以有一段时间的工作,然后显示相同的信息。
# telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
如果我在容器内部使用 wget localhost:8080 , 一切都正常。
如果我将 --net=host 添加到命令中,启动容器,问题就消失了。
所以我想这与 Docker 网络有关。我可以始终使用 --net=host,但显然会创建问题。
这似乎是突然出现的,我没有做任何事情。没有系统配置,也没有安装新软件。