我希望 docker 遵守 ufw 规则,所以找到了这个主题https://stackoverflow.com/questions/30383845/what-is-the-best-practice-of-docker-ufw-under-ubuntu
我做了以下事情:
设置"iptables": false
为docker,
放sed -i -e 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw
放iptables -t nat -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
并且它可以工作,但我不明白流量是如何到达容器的?
之前sudo iptables-save | grep 8123
给我:
-A POSTROUTING -s 172.21.0.5/32 -d 172.21.0.5/32 -p tcp -m tcp --dport 8123 -j MASQUERADE
-A DOCKER ! -i br-cf80e85bf468 -p tcp -m tcp --dport 8123 -j DNAT --to-destination 172.21.0.5:8123
-A DOCKER -d 172.21.0.5/32 ! -i br-cf80e85bf468 -o br-cf80e85bf468 -p tcp -m tcp --dport 8123 -j ACCEPT
但是我禁用 iptable 后就没有规则了,流量怎么会到达 docker 8123 呢?这里 8123 docker 发布端口 0.0.0.0:8123->8123/tcp