问题详情
使用 docker run -p 启动容器,宿主机无法访问,exec进入容器可以访问,curl 返回
curl: (56) Recv failure: Connection reset by peer
但是使用 --net host 参数以host网络模式启动容器可以运行
解决思路
1. 防火墙
查看是否关闭等等,这里不赘述,一般不会是这个问题
2. docker0 网桥损坏
可以重置docker0以及自定义网络尝试一下
sudo pkill docker
sudo iptables -t nat -F
sudo ifconfig docker0 down
sudo brctl delbr docker0
systemctl restart docker
我的问题不是这个
3. ip_forward 参数(我的问题)
网上查询很多人这样解决:
查看 sysctl net.ipv4.ip_forward 修改/etc/sysctl.conf 将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1
但是这无法解决我的问题,在moby的issue和pr中有以下 Add arch install docs warning about systemd-networkAdd arch install docs warning about systemd-network Docker bridge doesn’t work properly in Arch Linux at Digitalocean 参照上述问题在/etc/systemd/network/ 路径下的网络文件中加入
[Network]
...
IPForward=yes
...
重启后解决
|