docker默认使用iptables进行网络配置,与ufw有点不兼容,ufw无法管控docker暴露出来的端口,可能会造成一定的安全问题,所以某些情况下需要将docker的iptables设置为false。
设置之后进入docker容器内部发现无法访问网络,只能与172.17.0.1网段通信。
解决方案如下:
sudo systemctl edit docker.service
[Service]
ExecStartPre=/usr/sbin/iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
ExecStopPost=/usr/sbin/iptables -t nat -D POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
sudo systemctl daemon-reload
即可
参考资料:
https://gist.github.com/circa10a/e6cfc673af9282d17dfb958ef6adabeb
https://github.com/moby/moby/issues/26776