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启动失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • CentOS 7.* 更换国内镜像源完整指南

    CentOS 7.* 更换国内镜像源完整指南

    对于国内的CentOS用户来说,使用官方源进行软件安装和系统更新往往会遇到速度慢、连接不稳定等问题,本文将详细介绍如何为CentOS 7.*系统更换国内镜像源,大幅提升软件包下载速度,需要的朋友可以参考下
    2025-08-08
  • Linux远程访问及控制方式

    Linux远程访问及控制方式

    SSH(Secure Shell)是一种协议,用于安全地通过不安全的网络进行远程登录和其他网络服务,OpenSSH是SSH协议的一种开源实现,它支持数据加密,能有效防止信息泄露,适用于多种操作系统,SSH配置包括服务端和客户端,可以通过密码或密钥对验证方式进行身份验证
    2024-09-09
  • Linux之线程的创建方式

    Linux之线程的创建方式

    这篇文章主要介绍了Linux之线程的创建方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Linux中多版本Python管理方式

    Linux中多版本Python管理方式

    文章详细介绍了在Linux系统中使用pyenv进行Python版本管理和创建虚拟环境的步骤,包括安装pyenv、配置环境变量、安装Python版本、创建和激活虚拟环境等
    2026-01-01
  • 6种查看Linux进程占用端口号的方法详解

    6种查看Linux进程占用端口号的方法详解

    对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的,本文为大家分享6种查看Linux进程占用端口号的方法分别是:ss,netstat,lsof fuser,nmap,systemctl
    2018-10-10
  • LNMP环境下搭建yum的方法分析

    LNMP环境下搭建yum的方法分析

    这篇文章主要介绍了LNMP环境下搭建yum的方法,结合实例形式较为详细的分析了LNMP环境下搭建yum的相关命令、配置与使用技巧,需要的朋友可以参考下
    2018-03-03
  • ubuntu18.04安装搜狗拼音的简易教程

    ubuntu18.04安装搜狗拼音的简易教程

    这篇文章主要介绍了ubuntu18.04安装搜狗拼音的简易教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • apache虚拟主机中设置泛域名解析的方法

    apache虚拟主机中设置泛域名解析的方法

    apache虚拟主机中设置泛域名解析,主要是用到ServerAlias 的配置,供大家学习参考
    2013-02-02
  • 在Linux分区或逻辑卷中创建文件系统的方法

    在Linux分区或逻辑卷中创建文件系统的方法

    这篇文章主要给大家介绍了关于如何在Linux分区或逻辑卷中创建文件系统的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Linux下MongoDB的安装和配置教程

    Linux下MongoDB的安装和配置教程

    这篇文章主要介绍了Linux下MongoDB的安装和配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07

最新评论