ARTICLE · 1210334
WSL 容器转正:可以卸载 Docker 了吗?
本文基于 WSL 3.0.3(2026-10-10 发布,北京时间),所有命令和功能描述均来自微软、Docker 官方文档或 GitHub Release Notes,链接见文末。
◆ ◆ ◆
先说结论
WSL 容器(WSL Containers,命令行工具 wslc.exe)已经正式 GA 了。
微软在 2026 年 9 月 29 日发了官方博客《WSL containers is now generally available》,对应版本是 GitHub 上的 WSL 3.0.1。Release Notes 第一行写得很直白:
WSLc is generally available.
那能不能卸载 Docker Desktop?我的判断是:
docker run / docker build 跑单个容器、本地起个 MySQL、Redis 的同学:可以开始迁移,迁完就能卸。docker compose、Docker Desktop 自带 Kubernetes 的同学:先别卸。 官方博客明确说 Compose 支持还在做,是下一阶段的重点。下面细说。
◆ ◆ ◆
回顾:从预览到转正
6 月底我写过一篇《WSL 自带容器了:wslc 入门》,当时用的是 WSL 2.9.3 预览版。文章开头我写了一句:
本文基于 WSL 2.9.3 预览版,功能仍在公开预览阶段,正式版预计 2026 年秋季发布。
现在秋季到了,微软没有食言。我把官方 Release 页面的时间线捋了一下(时间按北京时间):
container restart | ||
| 3.0.1 | 2026-09-30 | 正式版,「WSLc is generally available」 |
注:GitHub 上 3.0.1 的发布时间是 2026-09-29 17:18(UTC),换成北京时间已经是 9 月 30 日凌晨;微软博客的日期是 9 月 29 日。
3.0.1 的变更里还有一条很有意思的 PR:「Remove references to WSLC being in preview」,就是把代码里所有“预览”字样删掉。这算是最硬的转正证据了。
◆ ◆ ◆
GA 版比预览版多了什么
如果你读过上一篇,基础用法(run、ps、stop、build)都没变。GA 版主要补了这些,来自官方博客:
wslc container restart:重启运行中的容器;wslc container cp:通过 tar 归档在容器内外拷文件;wslc system info:一眼看清容器环境状态;wslc network connect / disconnect:把容器挂到网络上、或者摘下来;wslc events:实时输出容器事件流;wslc create / wslc run 支持 --stop-timeout(-1 表示无限等待)和 --mount;企业侧也补了 Intune 开关和镜像仓库白名单,对公司电脑上用的同学很关键。
◆ ◆ ◆
wslc 和 Docker Desktop 对比
这是大家最关心的。我按官方文档能确认的内容整理了一张表,官方没说的我标了“未见官方说明”。
wsl --update 即可,没有单独的引擎要装 | ||
wslccontainer,命令结构贴近 Docker | docker | |
暂不支持compose.yaml 不改就能用 | ||
settings.yaml 调整;空闲 30 秒后会话 VM 自动关闭 | ||
Microsoft.WSL.Containers(C#、C++/WinRT) | ||
单容器场景 wslc 已经够用了,缺的是 Compose、K8s 和图形界面这一整套“全家桶”。
◆ ◆ ◆
迁移步骤:一步一步来
下面的命令都能直接复制。PowerShell 命令在 Windows Terminal 里执行。
第一步:升级 WSL,确认 wslc 可用
# 升级到最新的 WSL 正式版
wsl --update
# 确认 WSL 版本,wslc 需要 2.9.3 及以上
wsl --version
# 查看 wslc 版本
wslc version
# 跑一个官方示例,看到 Hello 说明一切正常
wslc run --rm hello-world
上一篇里我是用 wsl --update --pre-release 装的预览版,现在直接 wsl --update 就行了,不用再加参数。
第二步:先调好资源和存储位置
wslc 不读 .wslconfig,它有自己的配置文件 %LOCALAPPDATA%\wslc\settings.yaml。
# 第一次执行会生成配置文件(所有项默认注释掉),并用编辑器打开
wslc settings
我自己会改这几项:
session:
cpuCount:4# 分给容器会话的 CPU 数
memorySize:8GB# 内存上限,默认是 Windows 总内存的 50%
storagePath:D:\data# 镜像和容器存到 D 盘,C 盘松口气
改完让设置生效:
# 结束当前会话,下次执行 wslc 命令时会按新配置启动
wslc system session terminate
注意:官方文档说了,修改
storagePath不会搬走已有的镜像和容器,会在新位置建一个空会话。所以最好在迁移镜像之前先改好。
第三步:把 Docker 里的镜像搬过来
自己构建的、内网仓库拉不到的镜像,用 save / load 搬过去。在卸载 Docker Desktop 之前执行:
# 用 Docker 把镜像导出成 tar 文件
docker image save -o myapp.tar myapp:latest
# 用 wslc 导入
wslc image load -i myapp.tar
# 确认导入成功
wslc image list
公网镜像不用搬,wslc 运行时会自动拉取。
第四步:把常用命令换过去
以本地开发最常见的“起一个 Web 服务”为例:
# 后台运行 nginx,把本机 8080 映射到容器 80
wslc run -d--rm-p8080:80--name web nginx
# 查看运行中的容器
wslc container list
# 看日志
wslc container logs web
# 停掉(因为加了 --rm,停止后自动删除)
wslc container stop web
第五步:确认后再卸载
全部跑通、确认没有遗漏后,再按 Docker 官方的卸载文档卸掉 Docker Desktop。顺序别反了,否则镜像就导不出来了。
◆ ◆ ◆
谁可以卸,谁还不该卸
我按场景分了一下:
docker run 起数据库、中间件,做本地联调 | |
docker compose up 一键起一整套服务 | |
说一下我自己:我做 Java 后端,平时就是起 MySQL、PostgreSQL 跑测试,几乎不用 Compose。对我来说,wslc 已经够用了。
◆ ◆ ◆
最后说一句
上一篇我说 wslc 是“很实在的更新”,转正之后这个判断没变,反而更确定了。
它的本质不是“又一个 Docker”,而是把 Linux 容器变成了 Windows 自带的能力——不用单独装引擎,不用操心许可证,IT 还能管得住。
至于 Docker Desktop 卸不卸,看你用了它多少东西:只用了 docker run,那就可以放心迁过来;Compose 和 K8s 离不开,就再等等,微软已经把 Compose 写进路线图了。
如果你也迁过来了,欢迎留言说说踩到了什么坑。
◆ ◆ ◆















































































