docker iptables规则链问题


docker stop 容器时(注意是stop),是否会自动删除宿主机中的该容器所对应的Iptables规则链?
还是
docker rm 容器时(注意是rm),是否会自动删除宿主机中的该容器所对应的iptables规则链?

假如我有个容器A,已经开放了3306端口出来。此时宿主机中的iptables已经有相关的规则链(通过docker run -p 指定的)
现在我重启容器A,那么该容器的IP会改变。(假设原来为172.17.0.1 现在为172.17.0.2)

问题来了:
重启后的容器A,宿主机还是可以访问3306端口么?

我遇到的情况是 不能再访问3306端口
我需要手动将宿主机的iptables规则链中的172.17.0.1对应的3306的规则,修改为172.17.0.2.

各位有遇到过类似问题么?请教
已邀请:

我活了这小半辈子

赞同来自:


遇到了!!!
我发现iptables规则链里的规则使用rm 容器,并不会自动删除,它会递增的在iptables增加新规则。老的规则残留。
导致我的问题是,容器的端口占用了我系统的端口,导致我系统的端口无法访问,出现:“no router to host”的问题。
这是个大坑啊,docker不断启动容器,就会不断增加新iptables规则,还会和现有端口冲突。
你重启机器这些规则也会存在,需要手动清理,不然你的容器提供的网络端口肯定会出现问题。
。。。。。。。。。。
目前无解。。有相关人士可以找我联系:http://www.cnblogs.com/drawnkid/

要回复问题请先登录注册