我第一次在 Windows 上折腾 Docker Desktop 时,被三个名字绕晕了一整天:Windows、WSL、Docker Desktop。装好了 Docker Desktop,提示要先配置 WSL;WSL 装好了,又说要升级版本;终于能进 Ubuntu 了,docker 命令居然还没法用。如果你也在经历“装了三层软件却不知道谁在干活”的循环,这篇内容就是为你准备的。我要把 Windows、WSL 和 Docker Desktop 三者之间的职责边界、依赖关系、配置方式和常见报错一次讲透,读完你会明白:为什么 Windows 上跑 Linux 容器非要经过 WSL,哪一层出了问题该去哪查,以及怎么靠这套组合跑起数据库、本地 AI 工具这些真实服务。
1. 先理清三者的职责:为什么 Windows 上跑容器要绕道 WSL
很多人一开始就把这三件事当成三个“可选项”在装,结果装到一半才发现它们根本不是并列关系,而是一条依赖链。
1.1 Windows 只是宿主,真正的舞台是 Linux 内核
先明确一句话:Docker 容器本质上不是一个“软件安装包”,而是一组依赖 Linux 内核特性运行的进程。容器技术用到的 namespace(隔离)、cgroup(资源限制)、overlayfs(分层文件系统)都是 Linux 内核提供的能力。Windows 内核虽然也很强大,但它没有提供这些容器原语,所以你在 Windows 上没法直接跑一个 Linux 容器镜像。
那有人会问:Windows 不是也有 Docker Desktop 吗?它可以直接在 Windows 上装啊。对,Docker Desktop 的安装包确实是一个 Windows 程序,但它只是“客户端的壳”,真正干活的 Docker 引擎(dockerd)并不直接跑在 Windows 内核上,而是跑在一个 Linux 环境里。这就是整个链条的起点:Windows 只能当宿主,容器运行的舞台必须在 Linux 里。
这也是为什么现在几乎所有开源项目、AI 工具、数据库中间件给的镜像都是 Linux 镜像。Windows 容器镜像不是没有,而是生态非常窄,多数开源社区根本不维护。所以只要你想在 Windows 机器上跑这些服务,就必须先准备一个 Linux 运行环境。
