1 问题概述 {#1-%E9%97%AE%E9%A2%98%E6%A6%82%E8%BF%B0}
DataEase 执行重启命令 dectl restart 出现异常:driver failed programming external connectivity on endpoint xxx
ERROR: for dataease
Cannot restart container cb33985c33e7ee56666529a2665a0alfa2
dc8£95c168b758482602b32b3708d: driver failed programming external connectivity
on endpoint dataease(c8b34dbl4cffe52afbl905a7ac27770304c8e5053b769a69734c1567e3
9277a9) :
(iptables failed: iptables
--wait -t nat -A DOCKER -p tep -d 0/0 --dpo
rt 7088 -j DNAT --to-destination **.**.**.**:8081 ! -1 br-£68b984b88c6: iptables:
No chain/target/match by that name.
(exit status 1))
`ERROR: for mysql
Cannot restart container bc5bd1068ae7e7a23ab15e8c5927808ed5b0
de4f696dal410abc093f949bfl: driver failed programming external connectivity on
endpoint mysql(d668b6b7b3e37e8f55c6ca4b4fd6fc6l8cc362f67eacl15a7a075316304071b
) :
(iptables failed: iptables --wait -t nat -A DOCKER -p tep -d 0/0 --dport 330
6-j DNAT--to-destination `.`.`.`:3306
-1 br-f68b984b8806: iptables: No ch
ain/target/match by that name.
(exit status 1))
`
2 问题分析 {#2-%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90}
启动完容器后,发现无法连接 MySQL 容器,经查没有关闭防火墙,未开放 3306 端口,因此执行 systemctl stop firewalld.service 关闭防火墙,最后执行 dectl restart 重启了一下 DataEase 就出现了上述错误。
原因:Docker 服务启动时定义的自定义链 Docker 由于防火墙被清掉。
防火墙的底层是使用 iptables 进行数据过滤,建立在 iptables 之上,这可能会与 Docker 产生冲突。当防火墙启动或者关闭的时候,将会从 iptables 中移除 Docker 的规则,从而影响了 Docker的正常工作。
当你使用的是 Systemd(我上面关闭防火墙用的 systemctl 就是 Systemd 的主命令, 用于管理系统)的时候, 防火墙会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动或者重启防火墙 ,你就需要重启 Docker 进程了。
重启 Docker 服务及可重新生成自定义链 Docker。
3 问题解决 {#3-%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3}
#重启 Docker 即可
systemctl restart docker