报错信息:
docker: Error response from daemon: driver failed programming external
connectivity on endpoint thirsty_elion
(f03101d9af1ecd3ce3aacc037ec7fe4af62a7da0864139efb6808cc3b434480e):
(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0
–dport 8090 -j DNAT --to-destination x.x.x.x:8090 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).
您可以尝试以下几个步骤来解决这个问题:
-
重启Docker:有时候简单地重启Docker服务可以解决网络问题:
sudo systemctl restart docker
-
重新加载
iptables
规则:如果iptables
规则被其他进程清除或更改,可以通过重启Docker来强制Docker重新创建其网络规则:sudo systemctl restart docker
-
确保
iptables
配置允许Docker:检查iptables
是否配置为允许Docker管理规则。您可以通过在Docker守护程序配置文件(通常位于/etc/docker/daemon.json
)中添加以下内容来确保这一点:{ "iptables": true }
修改配置后,重启Docker:
sudo systemctl restart docker
-
检查是否有冲突的防火墙规则:确保没有冲突的防火墙规则阻止Docker访问
iptables
。您可能需要暂时禁用防火墙来测试这一点:sudo systemctl stop firewalld # 如果使用Firewalld sudo ufw disable # 如果使用UFW
-
检查Docker网络设置:检查Docker的网络设置,确保一切正常:
docker network ls docker network inspect bridge
-
重新创建Docker网络:如果问题仍然存在,尝试重新创建Docker网络:
docker network rm <network_id> docker network create --driver bridge <network_name>