Ubuntu系统下Docker启动失败(iptables/nf_tables)的问题排查与修复方法

 更新时间:2025年09月01日 09:54:05   作者:BenChuat  
在 Ubuntu 系统中安装 Docker 后,有部分用户在启动 Docker 服务时遇到如下报错: Failed to start Docker Application Container Engine,本文将详细解释该问题的原因,并提供完整的修复方案,需要的朋友可以参考下

引言

在 Ubuntu 系统中安装 Docker 后,有部分用户在启动 Docker 服务时遇到如下报错:

Failed to start Docker Application Container Engine.
failed to create NAT chain DOCKER: iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Invalid argument

本文将详细解释该问题的原因,并提供完整的修复方案。

问题现象

使用以下命令启动 Docker:

sudo systemctl start docker

执行后,使用以下命令查看docker运行情况

sudo systemctl status docker

发现状态为 failed

使用以下命令查看详细错误日志

sudo journalctl -u docker.service --no-pager --since "10 minutes ago"

伴随日志提示:

failed to create NAT chain DOCKER: iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Invalid argument

这是 Docker 在使用默认 iptables-nft 后端时,与内核的 nf_tables 实现存在兼容性问题,无法创建 NAT 表中用于容器网络的 DOCKER chain。

原因分析

Ubuntu 从 20.04 起,iptables 默认使用 nf_tables 模式,而 Docker 更稳定地支持 iptables-legacy 模式。

这就导致 Docker 启动时无法正确配置网络桥接规则,从而守护进程失败退出。

解决方案:切换为 iptables-legacy 模式

1. 确保系统已安装 iptables(非 nft 工具包)

sudo apt install iptables

2. 执行切换命令(无需单独安装 iptables-legacy 包)

sudo update-alternatives --config iptables

系统会提示你可选项,例如:

选择带有 iptables-legacy 的序号(如 1),然后回车。

同理,切换 IPv6:

sudo update-alternatives --config ip6tables

3. 若缺少 iptables-legacy 可用项,可软链接模拟:

sudo ln -sf /usr/sbin/iptables /usr/sbin/iptables-legacy
sudo ln -sf /usr/sbin/ip6tables /usr/sbin/ip6tables-legacy

sudo update-alternatives --install /usr/sbin/iptables iptables /usr/sbin/iptables-legacy 100
sudo update-alternatives --install /usr/sbin/ip6tables ip6tables /usr/sbin/ip6tables-legacy 100

然后再次运行 --config 命令进行选择。

4. 重启 Docker 服务

sudo systemctl daemon-reexec
sudo systemctl restart docker

5. 验证是否恢复正常

docker info
docker run hello-world

如无报错即修复成功。

到此这篇关于Ubuntu系统下Docker启动失败(iptables/nf_tables)问题排查与修复方法的文章就介绍到这了,更多相关Ubuntu Docker启动失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux下使用Apache搭建文件服务器的步骤

    linux下使用Apache搭建文件服务器的步骤

    这篇文章主要介绍了linux下使用Apache搭建文件服务器的步骤,帮助大家更好的搭建服务器,感兴趣的朋友可以了解下
    2020-12-12
  • 在Linux系统中查看目录大小的方法小结

    在Linux系统中查看目录大小的方法小结

    在 Linux 系统中,管理文件和目录的磁盘空间使用情况是日常维护的一部分,特别是在数据密集型的应用场景中,了解各个目录和文件的大小至关重要,du(disk usage)命令是一个强大的工具,可以帮助我们获取目录及其子目录的大小信息,需要的朋友可以参考下
    2024-11-11
  • LuManager图文安装使用教程和创建MysqL快速建站基本教程

    LuManager图文安装使用教程和创建MysqL快速建站基本教程

    这篇文章主要介绍了LuManager图文安装使用教程和创建MysqL快速建站基本教程,需要的朋友可以参考下
    2016-04-04
  • ubuntu安装deb软件包命令详解

    ubuntu安装deb软件包命令详解

    在Ubuntu中安装.deb包使用dpkg -i filename.deb,若提示依赖问题,运行apt-get install -f修复,安装后可用dpkg -s验证或直接运行软件测试功能
    2025-08-08
  • 分享apache http服务器设置虚拟主机的方法

    分享apache http服务器设置虚拟主机的方法

    对于多个域名绑定到一台服务器上,需要进行虚拟主机(virtual host)相关的设置,假设我要设置fuwu.jb51.net到一台服务器上,应该如何做虚拟主机的设置呢?
    2011-08-08
  • Linux查看文件大小的几种方法汇总

    Linux查看文件大小的几种方法汇总

    这篇文章主要介绍了Linux查看文件大小的几种方法汇总,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Ubuntu基础设定:openssh-server的安装和使用介绍

    Ubuntu基础设定:openssh-server的安装和使用介绍

    今天小编就为大家分享一篇关于Ubuntu基础设定:openssh-server的安装和使用介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • CentOS7连接XShell与网络配置的方法

    CentOS7连接XShell与网络配置的方法

    这篇文章主要介绍了如何使用CentOS7连接XShell与网络配置的方法,可以更好的帮助大家工作和学习,感兴趣的小伙伴可以了解下
    2020-05-05
  • Linux下通过sed命令对kv方式的配置文件进行修改

    Linux下通过sed命令对kv方式的配置文件进行修改

    sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以行为单位进行处理,同时,sed是非交互式的,一旦执行便要处理完整个文件。这篇文章主要介绍了Linux下通过sed命令对kv方式的配置文件进行修改,需要的朋友可以参考下
    2018-11-11
  • CentOS7下实现终端输入中文设置详解

    CentOS7下实现终端输入中文设置详解

    这篇文章主要给大家介绍了关于CentOS7下实现终端输入中文设置的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用CentOS7系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07

最新评论