我有一个奇怪的问题,连接到码头集装箱通过tcp。
我的操作系统是Ubuntu 20.04
我做了什么。
我在一个容器中启动我的web服务器。我试过正式的Postgresql映像,问题依然存在。所以问题可能不是我的形象。
它监听端口8080上的0.0.0.0。我已经换了好几次端口了,所以不只是8080。
我在主机上将8080集装箱港口转发到8080。我试过把货物转到不同的港口,但问题仍然存在。
这是命令
docker run -rm-命名我的web容器-p8080:8080 my-web映像
尝试将wget localhost:8080挂起一段时间,然后说
连接被外国主机关闭.
telnet localhost 8080工作了一段时间,然后说了同样的话。
# telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.如果我从容器中wget :8080,一切都很好。
如果我将-net=host添加到命令中,启动容器,问题就解决了。
所以我想码头网络有问题。我总是可以使用-net=host,但这显然会带来问题。
这件事突然出现了,我什么也没做。没有系统配置,没有安装新软件。
发布于 2022-06-18 20:05:35
我试过了
docker network inspect bridge这就说明了以下情况。
[
{
"Name": "bridge",
"Id": "0e99160be59fd6417984db68695f6e6d4fa016e1d75a26734bccaff427ea6468",
"Created": "2022-06-08T11:16:47.413799955+03:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]我注意到了这一部分
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]172.17.0.0看上去像是我的互联网提供商给我的ip地址。
我想也许我应该给桥网络另一个地址。所以我把/etc/docker/daemon.json从
{
"experimental": true
}至
{
"experimental": true,
"default-address-pools" :
[
{
"base":"172.26.0.0/16",
"size":24
}
]
}然后运行服务停靠器重新启动。
从那以后问题就消失了。
https://stackoverflow.com/questions/72672412
复制相似问题