前言
使用docker运行redis时,出现Error response from daemon: driver failed programming external connectivity on endpoint redis异常信息
异常信息
1 docker: Error response from daemon: driver failed programming external connectivity on endpoint redis (343da2a78e0a1a1cdbe40932ecd2892a818c9ecfe1ac9f6e1894d8bdff13cbe2): (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 6379 -j ACCEPT: iptables: No chain/target/match by that name.
异常原因
因为在启动docker容器的时候或者做docker配置的时候,还对防火墙设置重新启动等配置,这样会清除docker的相关配置,导致在查询防火墙规则的时候显示不到docker的链。
iptables -L
查询iptables 链
而docker容器的底层原理:
在启动docker的时候会自动在iptables中注册一个链,通过防火墙的链也可以找到其注册的信息,主要注册这些链,是docker中的容器为了暴露端口而使用的,具体原因是你删除了iptables中的链
解决办法
重启docker容器
1 systemctl restart docker