docker: Error response from daemon: driver failed programming external connectivity on endpoint influxdb (b3495b933146e19ffa4593b266e2f32efcd960ae9abfb18ee1408f232bd97d37): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8086 -j DNAT --to-destination 172.17.0.2:8086 ! -i docker0: iptables: No chain/target/match by that name.
最简单最粗暴的方法就是: systemctl restart docker
但是,正式环境注意啊,别把别人的服务弄崩溃了
这个错误通常是由于Docker与iptables交互时发生问题引起的。以下是解决此问题的可能步骤:
检查iptables是否可用:
在终端中运行以下命令,确保iptables可用并未被禁用:
sudo iptables --list
如果iptables未安装,请安装它:
在Debian/Ubuntu上:
sudo apt-get install iptables
在CentOS/RHEL上:
sudo yum install iptables
重启Docker服务:
尝试重新启动Docker服务,以确保所有更改都生效:
在Ubuntu/Debian上:
sudo service docker restart
在CentOS/RHEL上:
sudo systemctl restart docker
清理iptables规则:
有时旧的iptables规则可能导致问题。尝试清理它们并重新运行Docker容器:
sudo iptables -F
检查Docker网络:
确保docker0
网络存在。运行以下命令:
ip a | grep docker0
如果docker0
不存在,请尝试重新创建它:
sudo service docker stop
sudo ip link del docker0
sudo service docker start
检查SELinux(如果启用):
如果您的系统启用了SELinux,它可能会限制Docker的操作。在这种情况下,可以通过将SELinux设置为宽容模式或禁用它来解决问题。请注意,禁用SELinux可能会对系统安全性产生影响,谨慎操作。
检查SELinux状态:
sestatus
如果SELinux处于启用状态,可以尝试将其设置为宽容模式:
sudo setenforce 0
或者,完全禁用SELinux,编辑/etc/selinux/config
文件并将SELINUX
设置为disabled
。
请注意,禁用SELinux可能需要重新启动系统。