news 2026/5/1 5:44:00

在 Windows中,WSL与Docker的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在 Windows中,WSL与Docker的关系

WSL 是地基,Docker 是房子,而你的代码是在房子里的某个房间跑的。

1. 什么是 WSL (Windows Subsystem for Linux)?

WSL的全称是Windows 下的 Linux 子系统

  • 它的作用:让你在 Windows 电脑上(不用双系统,不用笨重的虚拟机)直接跑 Linux 系统(比如 Ubuntu)。

  • 为什么需要它:你的自动驾驶代码(ROS 2、Autoware)是基于 Linux 开发的,它们依赖很多 Linux 独有的内核功能,在纯 Windows 上是跑不起来的。

  • 你的现状:你 VS Code 左下角显示的[WSL: Ubuntu],说明你现在的 VS Code 虽然界面画在 Windows 上,但它的“大脑”其实是连在这个 WSL Ubuntu 系统里的。

2. WSL 和 Docker 是什么关系?

简单来说:Docker 在 Windows 上全是靠 WSL 2 活着的。

  • Docker 的痛点:Docker 容器本质上是“借用”宿主机的 Linux 内核来运行的。但是 Windows 没有 Linux 内核。

  • WSL 的救场:WSL 2 在你的 Windows 里塞进了一个真正的 Linux 内核

  • 结合:当你在 Windows 上安装 Docker Desktop 时,Docker 会自动检测到 WSL 2,并把这个 Linux 内核作为它的后端引擎

可以说:没有 WSL 2,Docker 在 Windows 上就会跑得很慢、很难用,甚至跑不起来。

3. 这里的“套娃”关系(看懂这个就通了)

针对你现在的开发环境,其实是一个 4 层的“俄罗斯套娃”结构。请看下面的层级图:

  1. 第一层(最外层):Windows 11 (你的物理电脑)

    • 你在这里打开浏览器查资料,打开 VS Code 写代码。

  2. 第二层:WSL 2 (Ubuntu)

    • 这是一个寄生在 Windows 里的 Linux 系统。

    • 关键点:你的代码文件夹~/work_space/lubo_auto_car实际存储在这一层

  3. 第三层:Docker Engine (基于 WSL)

    • Docker 利用 WSL 的内核资源来管理容器。

  4. 第四层(最里层):Docker 容器 (root@21f8611da6f8)

    • 这就是你终端里显示的那个root@...

    • 这是一个完全隔离的、纯净的 ROS 2 开发环境。

    • 它通过挂载 (Volume Mapping)的方式,把第二层(WSL)里的代码文件夹,映射到自己内部。 所以一旦我们修改了wsl的代码文件夹,那么docker就能直接看到修改的文件。挂载 =打通。 它让隔离的 Docker 容器能够直接“触摸”到你 WSL 硬盘里的真实文件。~/autoware_ws/wordk_space:/root/work_space

  • A (~/autoware_ws/wordk_space):叫做Host Path(宿主机路径),也就是你 WSL 里那个真实的文件夹。

  • B (/root/work_space):叫做Container Path(容器路径),也就是 Docker 里面看到的那个文件夹。

  • 如果你在 WSL 里把~/autoware_ws/wordk_space文件夹删了:Docker 启动时会发现:“咦?我要挂载的那个洞口怎么不见了?” 于是 Docker 根本启动不起来,或者启动后里面是空的,之前的编译环境、代码、所有东西全没了。

  • 对于-v挂载进去的那个文件夹(/root/work_space):在 Docker 里面,永远、永远不要手贱去运行rm -rf在那里面删文件,就是在删你电脑硬盘里的真文件!

4. 为什么要用这种复杂的架构?

这其实是目前 Windows 用户开发 Linux 程序的最佳实践

  1. 性能最强:代码放在 WSL 里,文件读写速度极快(比直接放在 Windows C盘快得多)。

  2. 环境隔离:你的 Docker 容器(第四层)里装满了各种乱七八糟的 ROS 依赖库。万一搞坏了,删掉容器重开一个就行,不会把你的 WSL(第二层)或者 Windows(第一层)搞崩。

  3. 开发方便:VS Code 可以直接穿透到 WSL 里编辑代码,同时终端又连在 Docker 容器里编译代码,既享受了 Windows 的图形界面,又享受了 Linux 的编译能力。

总结

  • WSL是为了让 Windows 能拥有 Linux 的能力。

  • Docker利用 WSL 的能力来运行你的 ROS 2 环境。

  • 在 Windows 上操作 VS Code,修改存储在 WSL 里的代码,然后在 Docker 容器里编译运行。

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

2026年AI开发平台如何驱动金融、制造、零售的场景化落地?

通用型的AI工具已无法满足行业纵深需求。2026年,AI开发平台的竞争力将高度体现在其对垂直行业场景的深度理解与支撑能力上。金融、制造、零售作为数字化先锋行业,其智能化痛点与路径具有代表性。本文将剖析在这三大行业,2026年AI开发平台怎么…

作者头像 李华
网站建设 2026/4/18 14:56:09

手搭BLDC模型与电流滞回比较控制器实现方波控制

该模型采用电流滞回比较控制器对BLDC进行方波控制,其中BLDC模型为手搭模型,非采用自带的模型在电机控制领域,无刷直流电机(BLDC)因其高效、低噪等优势被广泛应用。今天咱就来唠唠如何通过手搭BLDC模型,配合…

作者头像 李华
网站建设 2026/4/23 12:41:19

燃烧室设计学习DAY4:湍流燃烧为何比层流燃烧快

目录 湍流燃烧与层流燃烧的速率对比:机理分析与动力学探讨 摘要 第一章 引言 第二章 层流燃烧:有序与缓慢的基准 2.1 层流火焰的结构与传播机制 2.2 层流燃烧速度的决定因素 第三章 湍流流动的基本特征 3.1 涡团结构 3.2 湍流强度与雷诺数 第四…

作者头像 李华
网站建设 2026/4/27 14:46:49

燃烧室设计学习DAY6:热力学第一定律:能量守恒的奥秘

目录 热力学第一定律深度解析:理论基础、历史演变与应用价值 引言 第一章:热力学第一定律的历史渊源与演进 1.1 热质说的统治与挑战 1.2 迈尔的直觉与贡献 1.3 焦耳的实验铁证 1.4 亥姆霍兹的数学化表述 第二章:热力学第一定律的科学…

作者头像 李华
网站建设 2026/4/23 6:08:31

力扣Hot100系列16(Java)——[堆]总结()

文章目录前言一、数组中的第K个大的元素1.题目2.代码3. 例子二、前k个高频元素1.题目2.代码3.理解1.PriorityQueue的排序规则2.offer方法和add方法的区别4. 例子三、数据流中的中位数1.题目2.代码3. 例子前言 本文记录力扣Hot100里面关于堆的三道题,包括常见解法和…

作者头像 李华
网站建设 2026/4/19 3:57:55

什么?Agent Skills在“货拉拉”AI应用尝试?

前言 美国时间 2025 年 12 月 18 日,Anthropic 正式宣布将 Agent Skills 发布为开放标准。去年刚写了篇关于 MCP 的文章,今年 Anthropic 发布了 Agent Skills,迫不及待的试一试,到底有没有宣发的那么强悍。 Agent Skills 是什么Th…

作者头像 李华