启动一个有 nat 映射端口的容器时,iptables 报 No chain/target/match by that name

找了N多网站和官方issue后,还是没找到真正的解决方法,网上到处转载的只是分析了原因,并没有明确的解决方案,为此与同事通宵加班终于解决了这个问题。

找到系统的/etc/sysconfig/iptables ,如果没有用以下命令保存一下,然后查看里边的内容

发现内容如下

查看启动容器的报错信息发现-A DOCKER DOCKER链,但在iptables文件里并没有找到,

由于之前在自己的系统(archlinux)学习使用docker时并没遇到这问题,

所以马上去看了下自己系统里的iptables的文件,

内容如下

对比后以去掉不相关的规则,以现*nat规则里有以下的对于docker的配置

*filter 规则里对docker的配置如下

去掉不相关规则后的配置文件如下(可以直接用):

然后再加上自己服务器的过滤规则,合并后覆盖到Centos 7的 /etc/sysconfig/iptables 文件

重启iptables 服务

两次启动对应docker容器,

发现容器启动成功,虽然有警告,但并不影响容器的使用

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐