Docker : iptables failed/iptables: No chain/target/match by that name问题解决

本文介绍了一种不重启Docker服务解决iptables错误的方法,通过控制防火墙状态,成功重启MySQL容器,避免了生产环境服务中断的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

不重启Docker服务解决iptables failed 。

问题描述

今天因为MySQL修改了配置文件,需要重启MySQL容器使之生效,然后执行了docker restart mysqlN,结果重启失败!报了以下错误:

Error response from daemon: Cannot start container mysqlN:iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306  **
-i docker0: iptables: No chain/target/match by that name.
 (exit status 1)

导致MySQL服务宕了一会,这可是生产环境的服务啊(/哭脸)。

接着我在网络上查找相关资料,发现遇到这个问题得同学不在少数,但是解决办法都差不多:先停止Docker服务,在重新构建docker0网卡,再开启Docker服务。

但是!!Docker运行了好些生产环境,这样重启可能会造成不可逆的未知情况,不能停啊,所以继续查找解决方案。

终于在国外的一个网址找到解决方案,成功解决这个错误问题:

When starting a container with docker run, if the firewall service isn’t started, you will see the following iptables error:
docker: Error response from daemon: driver failed programming external connectivity on endpoint (979e4123444e276344d23bf41ea1f59ea31c61ff31fe77ce38d16672b1fe2e78): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32779 -j DNAT --to-destination 172.17.0.2:5000 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).

描述中说,如果防火墙服务未启动,您将看到这个iptables错误,也就是笔者遇到的这个错误。

解决过程

打开防火墙

[root@template-centos7 /root]# systemctl status firewalld.service 

重启容器

[root@template-centos7 /root]# docker restart mysqlN
mysqlN         ##重启成功

关闭防火墙

[root@template-centos7 /root]# systemctl stop firewalld.service 

问题解决。

总结

多方位思考以及查找解决方案,也就从大多数解决方案中越过坑点,避免了重启服务造成的未知情况。

希望本文能帮助到你。

参考资料:https://success.docker.com/article/iptables-error-when-starting-container-with-docker-run

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值