解决 Docker 错误:'iptables: No chain/target/match by that name'

在使用 docker run -d -p 5000:5000 --restart=always --name registry registry:2 命令启动 Docker 容器时,您可能会遇到以下错误信息:

docker: Error response from daemon: driver failed programming external connectivity on endpoint registry (ecd62a7b468eb5c9873e34f3f8c379af709694041ea00b9854247264eda1ccf2): (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 5000 -j ACCEPT: iptables: No chain/target/match by that name. (exit status 1)).

错误分析

这个错误是由于 Docker 在尝试创建一个 iptables 规则时失败导致的。具体错误信息是 'iptables: No chain/target/match by that name',意味着 iptables 无法找到指定的链、目标或匹配项。

这个问题可能是由于 iptables 配置不正确或者 iptables 服务未正常启动所致。

解决方法

您可以尝试以下解决方法:

  1. 确保 iptables 服务已启动:

    • 使用以下命令检查 iptables 服务的状态: bash systemctl status iptables - 如果服务没有运行,使用以下命令启动它: bash systemctl start iptables
  2. 检查 iptables 配置:

    • 使用以下命令查看当前的 iptables 配置: bash iptables -L - 如果看到任何错误或缺失的配置,请参考相关文档修复配置问题。
  3. 配置防火墙:

    • 如果您使用的是防火墙软件(如 firewalld),请确保它已正确配置允许 Docker 容器的外部连接。 - 您可以查看相关文档或运行以下命令来配置防火墙: bash firewall-cmd --zone=public --add-masquerade --permanent firewall-cmd --zone=public --add-port=5000/tcp --permanent firewall-cmd --reload - 这些命令将允许 Docker 容器的外部连接,并将端口 5000 添加到防火墙规则中。

寻求进一步帮助

如果上述方法无法解决问题,请提供更多关于您的操作系统和 Docker 版本的信息,以便我们能够提供更具体的帮助。

解决Docker错误:iptables: No chain/target/match by that name

原文地址: http://www.cveoy.top/t/topic/fTTC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录