Docker: driver failed programming external connectivity on endpoint xxx 问题分析及解决

问题如下:

在这里插入图片描述重启容器发现无法正常启动,报错:driver failed programming external connectivity on endpoint xxx


问题分析:

首先理清一下我做了什么操作。我记得在我开启docker后,执行 docker-compose up -d 启动完容器后,发现无法连接 MySQL 容器,经查没有关闭防火墙,未开放3306端口,因此执行 systemctl stop firewalld.service 关闭防火墙,最后我 docker-compose restart 重启了一下容器就出现了上述错误。

那毫无疑问,肯定是我关防火墙导致重启容器失败。为什么会这样呢?

原因:docker 服务启动时定义的自定义链 docker 由于 防火墙 被清掉。防火墙 的底层是使用 iptables 进行数据过滤,建立在iptables之上,这可能会与 docker产生冲突。当 防火墙 启动或者关闭的时候,将会从 iptables 中移除 docker 的规则,从而影响了 docker的正常工作。当你使用的是 Systemd (我上面关闭防火墙用的 systemctl 就是 Systemd 的主命令, 用于管理系统) 的时候, 防火墙 会在 docker 之前启动,但是如果你在 docker 启动之后再启动 或者重启 防火墙 ,你就需要重启 docker进程了。重启 docker服务及可重新生成自定义链docker


问题解决:

重启 docker 即可:systemctl restart docker


  • 48
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0rta1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值