1. 为什么我要甩掉 Docker Desktop
过去半年,我把开发主力机从“Windows + Docker Desktop”切换成了“WSL2 独立安装 Docker 引擎”,不是一时兴起,而是被 Docker Desktop 的资源占用和黑盒行为磨得没脾气。如果你也是 WSL2 重度用户,正在纠结要不要卸掉 Docker Desktop,或者刚被“虚拟化未启用”之类的报错卡住,这篇文章可以把整条路线讲清楚。
这套方案适合谁?只要你需要的目标是 Linux 容器,且不依赖 Docker Desktop 特有的图形界面和文件共享机制,就值得试一下。独立安装 Docker Engine 的回报很直接:系统开销更小,docker 命令与生产环境行为一致,排查问题也不用再绕一层封装。下面我会把环境准备、安装步骤、踩坑记录和日常替代方案一次性说透。
1.1 Docker Desktop 的三大痛点
最先让我没法忍的是内存。以 WSL2 为后端的 Docker Desktop 会在幕后维护一个专用的 WSL 发行版,名叫 docker-desktop,所有容器都跑在这个专用发行版里。日常同时开 VS Code、两三个容器和一个 Ubuntu 终端,空闲状态内存占用轻松突破 5GB。对一台 16GB 物理内存的机器来说,切几次窗口就开始卡,容器一多就要提心吊胆地看任务管理器。
第二个痛点是文件共享偶尔抽风。Docker Desktop 为了在 Windows 和 WSL 之间做 bind mount,会做一层路径转换,但在我实际使用中,这个转换经常莫名其妙失效。比如 docker-compose 里挂载 ./data:/var/lib/mysql,改完配置重启容器后数据目录就找不到了,排错排到怀疑人生。独立引擎直接复用 WSL2 自身的文件系统语义,这类路径问题少很多。
第三个痛点是定制受限。Docker Desktop 把 daemon、CLI、compose 等组件打包在一个整体里,很多底层参数被封装层藏了起来,出了问题你想改 daemon.json 都不一定生效。而独立 Docker Engine 是由 systemd 托管的普通 Linux 服务,所有配置都摆在明面上,升级版本、锁定版本、调整存储驱动都由你说了算。
| 对比项 | Doc
