折腾一整晚!Windows 安装 Docker 完整踩坑实录(真实还原版)

前言

为了在 Windows 上搭建 Docker 环境,从晚上一直折腾到凌晨,一路踩坑无数:WSL 版本下错、旧内核删不掉、Docker 装了又卸、卸了又装、软链接报错、镜像拉不下来、C 盘爆满…… 终于在凌晨彻底跑通。

这篇博客完全还原今晚真实步骤,包括一开始下错版本、反复出错、怎么卸载、怎么重装、哪里最容易卡死,全部写清楚,给后来人避坑。


一、最开始:我直接下载了旧版 WSL 内核,从第一步就错了

最开始我想装 Docker,提示需要 WSL 2。

我按照网上老教程,下载了一个旧的 WSL 内核更新包:

wsl_update_x64.msi

直接双击安装,以为搞定了。

结果运行 Docker 直接报错:

  • WSL 内核版本过低
  • 无法启动 Docker Desktop
  • 始终提示需要更新 WSL 内核

当时我并不知道:

这个 wsl_update_x64.msi 是很早以前的旧内核补丁,不是现在新版完整 WSL。

从第一步版本就下错,导致后面全部卡死。


二、尝试更新 WSL,全部失败

我执行:

wsl --update

要么网络失败,要么更新完版本依旧不对。

wsl --status 只显示默认版本 2,不显示内核版本,明显不正常。


三、卸载旧 WSL:命令无效,最终靠「设置 - 应用」卸载

我一开始用命令卸载:

wsl --uninstall

完全没用,旧内核依旧存在。

最后才找到正确方法:

  1. 打开 设置 → 应用 → 已安装的应用
  2. 搜索:Windows Subsystem
  3. 找到:
    • Windows Subsystem for Linux Update
    • 旧的 WSL 内核相关程序
  4. 逐个右键 卸载
  5. 卸载完成后重启电脑

这一步才真正把旧 WSL 清理干净。


四、重新安装正确版本 WSL:wsl.2.6.3.0.x64.msi

清理干净后,下载正确新版 WSL:

wsl.2.6.3.0.x64.msi

新版本是通过github下载的(不能相信豆包给你的让你下载的网站,要不就是旧版本,要不就是404网站,豆包太low了,就这一点折腾我好几个小时)

(Release 2.6.3 · microsoft/WSL)

这里又踩坑:

  • 直接双击安装,没有管理员权限 → 安装不完整
  • 安装后不重启 → 内核不生效

正确步骤:
(▲前提:要先把你电脑上已存在的旧版本WSL卸载掉,你才能安装新版本,不然容易导致你安装的新版本没有用,电脑上仍然是旧版本在发力)

  1. 管理员身份运行安装包
  2. 一路下一步安装
  3. 安装完成必须重启电脑

重启后,WSL 才算真正装好。


五、安装 Ubuntu 分发版:用户名踩坑

执行安装 Ubuntu:

wsl --install -d Ubuntu

设置用户名时,我输入类似:

dell_

直接报错:

Invalid username. A valid username must start with...

原因:

Linux 用户名不能以符号结尾,必须字母开头,只能小写字母、数字、下划线。

改成正常名字如 dell 就通过了。


六、Docker 安装:装 C 盘空间爆炸 → 卸载 → 重新装 D 盘

第一次安装 Docker 默认路径 C 盘,没多久 C 盘直接红了。

于是我:

  1. 从设置里卸载 Docker
  2. 删除残留文件
  3. 准备把 Docker 完整迁移到 D 盘

七、迁移 D 盘:软链接 mklink 疯狂报错

我想通过软链接把:

C:\Program Files\Docker

映射到

D:\tools\Docker\docker

执行命令:

mklink /J "C:\Program Files\Docker" "D:\tools\Docker\docker"

结果连续报错:

  1. 在 PowerShell 里运行

    报错:不识别 mklink 命令

    原因:mklink 是 CMD 命令,PowerShell 不支持。

  2. 在 CMD 里运行,但不是管理员

    报错:权限不足。

  3. 管理员 CMD 运行,但文件夹已存在

    报错:当文件已存在时,无法创建该文件。

    原因:之前卸载 Docker 后残留文件夹没删干净。

最终正确步骤:

  1. 管理员 CMD

  2. 先删残留目录:

    rmdir /s /q "C:\Program Files\Docker"
    
  3. 再创建链接:

    mklink /J "C:\Program Files\Docker" "D:\tools\Docker\docker"
    

出现:

为 C:\Program Files\Docker <<===>> D:\tools\Docker\docker 创建的联接

才算成功。


八、重装 Docker,默认路径安装(实际写入 D 盘)

软链接建好后,安装 Docker 时保持默认路径不变

C:\Program Files\Docker

因为软链接已经指向 D 盘,文件会实际写入 D 盘。

安装完成后重启电脑。


九、Docker 数据目录也要迁移 D 盘(最容易忘)

Docker 程序虽然在 D 盘,但镜像数据默认还在 C 盘:

C:\Users\xxx\AppData\Local\Docker\wsl\data\ext4.vhdx

非常占空间。

迁移步骤:

  1. 打开 Docker → 设置(齿轮)
  2. Resources → Advanced
  3. 修改 Disk image location 到 D 盘
  4. 点击 Apply & Restart
  5. 弹窗选择 Yes, move it
  6. 等待迁移完成(不要中断)

十、最后一关:docker run hello-world 拉取失败

运行测试:

docker run hello-world

直接报错:

failed to resolve reference... 连接超时

原因:国内网络无法直接访问 Docker Hub。

解决:配置镜像加速。

进入 Docker → Docker Engine,填入镜像地址:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev",
    "https://proxy.1panel.live",
    "https://docker.1panel.top",
    "https://docker.1ms.run",
    "https://docker.ketches.cn"
  ]
}

保存重启 Docker。


十一、终于成功!

再次运行:

docker run hello-world

出现:

Hello from Docker!
This message shows that your installation appears to be working correctly.

折腾一整晚,环境终于彻底搭建完成。


今晚所有易错点、卡死点总结

  1. 一开始下错 WSL 版本,用了旧内核补丁
  2. 旧 WSL 无法用命令卸载,必须在设置 - 应用里卸载
  3. WSL 安装必须管理员 + 重启,否则不生效
  4. Ubuntu 用户名不能以下划线结尾,否则报错
  5. Docker 装 C 盘必炸,必须迁移 D 盘
  6. mklink 只能在管理员 CMD 里用,PowerShell 不行
  7. 建软链接前必须删除原有目录
  8. Docker 数据目录默认在 C 盘,90% 的人会忘
  9. 国内不拉镜像加速,hello-world 都跑不起来

最终成功环境

  • WSL 版本:2.6.3.0
  • 内核:6.6.87.2-microsoft-standard-WSL2
  • Docker 版本:29.3.1
  • 安装路径:D:\tools\Docker\docker
  • 数据路径:D 盘
  • 镜像加速正常
  • docker run hello-world 成功运行

更多推荐