使用 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 docker0systemctl 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...
重启后解决