当前位置: 首页 > news >正文

Ubuntu 系统 Docker 启动失败(iptables/nf\_tables)

Ubuntu 系统 Docker 启动失败(iptables/nf_tables)问题排查与修复详解

在 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-legacysudo 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

如无报错即修复成功。


http://www.dtcms.com/a/320283.html

相关文章:

  • 【CodeButty + 自制MCP】给AI装上翅膀,快速绘制思维导图
  • 驱动-设备树插件注册子系统
  • 【机器学习深度学习】大模型应用落地:微调与RAG的角色与实践
  • 为什么需要日志收集系统
  • 人工智能——自动微分
  • 大数据中需要知道的监控页面端口号都有哪些
  • C语言学习笔记——文件
  • 基于Python的实习僧招聘数据采集与可视化分析,使用matplotlib进行可视化
  • iptables封堵实验
  • Java——详解形参实参方法的重载
  • 《C语言》函数练习题--3
  • (易视宝)易视TV is-E4-G-全志A20芯片-安卓4-烧写卡刷工具及教程
  • Docker国内可用镜像列表(长期免费)
  • 三重移相的TPS双有源桥(DAB)变换器【simulink仿真模型】
  • python见缝插针小游戏源码。(可复制)
  • 【tips】css模仿矢量图透明背景
  • 目前常用于视频会议的视频编码上行/下行带宽对比
  • mysql_mcp_server_pro源码部署及启动报错新手指南:让智能体长出手来直接获取到最底层的数据
  • AI应用案例全景分析:从理论到实践
  • dmctlcvt工具介绍数据文件路径变化后如何拉起数据库
  • 基于 FreeMarker 实现 SQL 模板动态生成的完整指南
  • 移动端项目框架推荐
  • Effective C++ 条款27: 尽量用const、enum、inline替换 #define
  • restTemplate禁用url编码
  • 安装mkdocs
  • Python从入门到精通——第六章 字典与集合
  • 「日拱一码」046 分支定界算法
  • Airflow 入门案例教程
  • 前端性能优化:从请求到资源的精细调控
  • 【第9话:感知算法基础1】深度学习神经网络模型基础知识概念入门简介