news 2026/4/16 12:58:21

【踩坑记】WSL1 下 Docker 报错 iptables: No chain/target/match by that name 排查实录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【踩坑记】WSL1 下 Docker 报错 iptables: No chain/target/match by that name 排查实录

这是一篇为你整理的“踩坑记”,还原了从报错、排查到发现核心原因并解决的全过程。


【踩坑记】WSL1 下 Docker 报错iptables: No chain/target/match by that name排查实录

1. 背景与环境

今天在 WSL (Ubuntu 24.04) 环境下部署 Dify 项目,执行启动命令时遭遇 Docker 网络初始化失败。整个过程一波三折,最终发现是因为 WSL 版本过低导致的兼容性问题。

2. 报错现场

在项目目录下执行docker compose up,容器启动报错:

yan@DESKTOP-73KF9NM:~/dify/dify-1.11.2/docker$ docker compose up WARN[0000] No services to build [+] up 1/1 ✘ Network docker_default Error Error response from daemon: Failed to Setup IP tables: Unable to enable NAT rule: (iptables failed: iptables ... 4.8s failed to create network docker_default: Error response from daemon: Failed to Setup IP tables: Unable to enable NAT rule: (iptables failed: iptables --wait -t nat -I P OSTROUTING -s 172.18.0.0/16 ! -o br-71e21476f69d -j MASQUERADE: iptables: No chain/target/match by that name.

核心错误信息iptables: No chain/target/match by that name.
这通常意味着 Docker 尝试配置 Linux 内核的网络防火墙规则(NAT)时,找不到对应的内核模块或支持。

3. 排查过程

第一步:检查 Docker 版本与状态

首先怀疑是 Docker 安装不完整或版本问题,查看版本和信息:

$ docker version Client: Docker Engine - Community Version: 29.1.4 ... Server: Docker Engine - Community Engine: Version: 29.1.4 ...

Docker 版本非常新(29.1.4),服务端也是正常运行的。再看docker info,发现Firewall Backend设置为iptables

第二步:检查内核版本

注意到docker info输出中的这一行:

Kernel Version: 4.4.0-19041-Microsoft

这个内核版本看起来很旧(4.4.x),且带有Microsoft标识。此时终端随后崩溃退出:

适用于 Linux 的 Windows 子系统实例已终止。

这一现象结合内核版本,让人开始怀疑 WSL 的运行模式问题。

4. 真相大白

回到 Windows PowerShell 查看 WSL 的发行版状态:

PS C:\Users\Administrator> wsl -l -v NAME STATE VERSION * Ubuntu-24.04 Running 1

找到根因了!

当前的 Ubuntu-24.04 正在WSL 1模式下运行(VERSION 为 1)。
WSL 1 只是一个翻译层,使用的是 Windows 内核,并非真正的 Linux 内核。Docker 强依赖于 Linux 内核的 Netfilter/IPtables 模块来实现网络通信,而 WSL 1 对这些特性的支持非常有限或不完整,因此导致 Docker 无法创建 NAT 规则。

5. 解决方案

必须将 WSL 发行版升级到WSL 2。WSL 2 拥有真正的 Linux 内核,能够完美支持 Docker 的网络特性。

步骤 1:启用虚拟机平台

在 PowerShell(管理员)中执行:

PS C:\Users\Administrator> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

步骤 2:转换发行版版本

尝试将 Ubuntu-24.04 转换为版本 2。

第一次尝试时报错提示内核组件需要更新:

PS C:\Users\Administrator> wsl --set-version Ubuntu-24.04 2 正在进行转换,这可能需要几分钟时间... WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel

根据提示安装好 WSL 2 内核更新包后,再次执行转换命令:

PS C:\Users\Administrator> wsl --set-version Ubuntu-24.04 2 正在进行转换,这可能需要几分钟时间... 有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2

步骤 3:验证结果

确认版本已变为 2:

PS C:\Users\Administrator> wsl -l -v NAME STATE VERSION * Ubuntu-24.04 Stopped 2

6. 总结与反思

再次进入 WSL 环境,执行docker compose up,问题顺利解决。

经验教训
在 Windows 上使用 Docker 时,必须使用 WSL 2

  • WSL 1:由于缺少真实的 Linux 内核,无法支持 Docker 的网络特性(iptables/NAT),会导致No chain/target/match等诡异报错。
  • WSL 2:基于 Hyper-V 虚拟化技术,内置真实 Linux 内核,是 Docker Desktop 或 Docker Engine in WSL 的唯一正确选择。

以后遇到Kernel Version: 4.4.0-19041-Microsoft或 iptables 相关报错,第一时间检查wsl -l -v

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:43:55

STM32CubeMX安装步骤系统学习:配套工具链配置

STM32CubeMX安装与工具链配置全解析:从零搭建高效嵌入式开发环境 你是不是也曾遇到这样的情况?刚下载好STM32CubeMX,双击启动却弹出“ No Java virtual machine was found ”;或者好不容易打开界面,想生成Keil工程时…

作者头像 李华
网站建设 2026/4/16 11:00:18

STM32新手必看:Keil5代码自动补全设置手把手教程

让Keil5像现代IDE一样聪明:STM32开发中代码自动补全的真正打开方式你有没有过这样的经历?在写HAL_GPIO_的时候,脑子里明明记得有个初始化函数,但就是拼不对——是_Init()还是_Initialize()?大小写对吗?参数…

作者头像 李华
网站建设 2026/4/9 21:10:39

RabbitMQ 集群部署方案

RabbitMQ 一、安装 RabbitMQ 二、更改配置文件 三、配置集群 四、测试 环境准备:三台服务器,系统是 CentOS7 IP地址分别是: rabbitmq1:192.168.152.71rabbitmq2:192.168.152.72rabbitmq3:192.168.152.…

作者头像 李华
网站建设 2026/4/11 16:30:36

从零实现framebuffer显示:裸机环境下简单图形输出教程

点亮第一行像素:在裸机中实现Framebuffer图形输出的硬核实践你有没有试过,在一块全新的开发板上电后,除了串口打印出几行冰冷的“Hello World”,屏幕却始终漆黑一片?这种“看得见摸不着”的调试困境,正是许…

作者头像 李华
网站建设 2026/4/13 9:28:37

RabbitMQ 的介绍与使用

一. 简介 1> 什么是MQ 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。 其主要用途:不同进程Process/线程T…

作者头像 李华
网站建设 2026/4/9 19:35:18

Betaflight在F4飞控板上的配置优化:全面讲解

Betaflight在F4飞控板上的配置优化:从底层机制到飞行手感的全面调校 你有没有过这样的体验?——刚组装好一台穿越机,装上高端电机、轻量化机架、碳纤螺旋桨,结果一飞起来却“软绵无力”,转弯拖泥带水,油门…

作者头像 李华