Windows 装 Docker Desktop 看起来简单,但 WSL2 的坑、权限的问题、数据卷迁移的麻烦,每一个都够折腾一阵子。
先确认你的版本
按 Win + R 输入 winver 看版本。Win11 基本都行。Win10 需要 2004 以上(Build 19041)。
家庭版也能装 Docker Desktop,以前不行,现在 WSL2 后端全家桶都支持了。
装 WSL2
管理员 PowerShell:
wsl --install
wsl --update这条命令会开启 WSL 和虚拟机平台功能,然后安装 Ubuntu 默认发行版。重启电脑。
重启后设一下用户名密码,然后确认是 WSL2 而不是 WSL1:
wsl -l -v
# 应该看到 VERSION 列是 2如果是 1,转成 2:wsl --set-version Ubuntu 2
设 WSL2 为默认:wsl --set-default-version 2
装 Docker Desktop
去 Docker 官网下载安装包,双击安装。装完重启。
首次启动会让你同意条款、选设置。默认就行。注意 Settings → Resources → WSL Integration 里确保你的 WSL 发行版开关是开的。
WSL2 资源限制(重点)
WSL2 默认能吃掉你所有内存。8G 的机器它最多能吃到 8G,直接卡死。
在用户目录下创建 %USERPROFILE%.wslconfig:
[wsl2]
memory=4GB
processors=4
swap=2GB
localhostForwarding=true设完重启 WSL:wsl --shutdown,再打开就行。
4 给 WSL2,留 4G 给 Windows 自己用。
镜像加速
Docker 默认拉取 Docker Hub,国内慢。Settings → Docker Engine → 加 registry-mirrors:
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}Apply & restart。
数据卷迁移
WSL2 的数据存在虚拟磁盘里:%LOCALAPPDATA%Dockerwsldataext4.vhdx。随着用镜像越来越多,这个文件会越来越大。
迁移到其他盘:
# 停止 Docker 和 WSL
wsl --shutdown
# 导出
wsl --export docker-desktop-data "D:docker-data.tar"
# 注销原来的
wsl --unregister docker-desktop-data
# 导入到新位置
wsl --import docker-desktop-data "D:DockerData" "D:docker-data.tar" --version 2压缩变大的 vhdx 文件:
wsl --shutdown
Optimize-VHD -Path "$env:LOCALAPPDATADockerwsldataext4.vhdx" -Mode Full这个命令需要 Hyper-V 模块(Win10/11 专业版自带,家庭版没有)。
常见问题
“Docker Desktop requires the Server core with containers feature” — WSL2 没装好,wsl --install 然后重启。
“WSL 2 installation is incomplete” — 去 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 下载更新。
WSL 里访问不了 Windows 文件 — 确认 localhostForwarding=true。WSL 里访问 Windows 文件用 /mnt/c/。
Docker Desktop 启动后一直 “Docker Desktop is starting” — 资源不够。加大 .wslconfig 的 memory 限制,或者关掉其他吃内存的程序。
卸载(干净卸载)
光在控制面板卸载是不够的:
# 卸载 Docker Desktop
wsl --shutdown
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
# 删残留
Remove-Item "$env:APPDATADocker" -Recurse -Force
Remove-Item "$env:LOCALAPPDATADocker" -Recurse -Force