当前位置: 首页 > 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.xdnf.cn/news/1258615.html

相关文章:

  • Java基础学习1(Java语言概述)
  • 深入解析Java类加载机制:双亲委派模型的设计与实现
  • Springboot 使用 JPA 分页查询
  • Docker Buildx最佳实践:多架构镜像构建指南
  • 北京-4年功能测试2年空窗-报培训班学测开-第七十天-面试第一天
  • Debian系统 为账号添加sudo权限
  • 【驱动】RK3576-Debian系统使用ping报错:socket operation not permitted
  • C++线程库的学习
  • MCU-基于TC397的双BootLoader设计方案
  • 【VLLM篇】:原理-实现
  • 【运维进阶】NFS 服务器
  • [激光原理与应用-172]:测量仪器 - 能量(焦耳)与功率(瓦)的图示比较
  • RabbitMQ面试精讲 Day 14:Federation插件与数据同步
  • DBeaver 25.1.0 转储数据库失败解决方案(适配最新版界面)
  • Android 之 面试八股文
  • 在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏 (中)
  • Qwen系列模型
  • 【洛谷题单】--分支结构(一)
  • Python day37
  • 如何在NVIDIA H100 GPU上用Ollama以最高性能运行大语言模型
  • 【MySQL基础篇】:MySQL事务并发控制原理-MVCC机制解析
  • 跨境电商增长突围:多维变局下的战略重构与技术赋能
  • P1690 贪婪的 Copy
  • Elcomsoft Wireless Security Auditor 安装教程-安全检测工具使用指南
  • 鸿蒙 - 分享功能
  • 【unity实战】使用Unity程序化生成3D随机地牢(附项目源码)
  • Redis 分布式Session
  • RAGAS:检索增强生成系统的无参考评估框架与技术解析
  • 知识随记-----Qt 实用技巧:自定义倒计时按钮防止用户频繁点击
  • Springboot2+vue2+uniapp 小程序端实现搜索联想自动补全功能