Settings > Resources > WSL Integration 是 Docker Desktop 中配置 WSL 集成的唯一路径;若未显示该选项,说明未检测到 WSL 发行版或 Docker Desktop 版本过旧。

Settings > Resources > WSL Integration 是唯一入口
这个路径不是可选方案,而是 Docker Desktop 为 WSL 集成预设的唯一配置界面。点开右上角齿轮图标后,左侧菜单里没有“WSL”“Linux”或“Integration”独立项,必须逐级展开:Resources → WSL Integration。如果没看到这个标签页,说明 Docker Desktop 没识别到已安装的 WSL 发行版,或当前运行的是旧版(
wsl --list --verbose 必须先跑通
WSL Integration 页面为空白、灰色或显示“No distributions found”,大概率是 WSL 环境本身未就绪。不是 Docker 的问题,而是 Windows 底层没准备好。执行以下命令验证:
wsl -l -v
正常输出应包含至少一行 NAME、STATE 和 VERSION,且 VERSION 必须为 2。常见卡点包括:
- 未启用“Virtual Machine Platform”和“Windows Subsystem for Linux”两个 Windows 功能(需管理员 PowerShell 运行
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart和dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart) - 未安装 WSL2 内核更新包(从 微软官方链接 下载手动安装)
- 已安装发行版但处于
Stopped状态,需先运行wsl -d Ubuntu启动一次
Enable integration with my default WSL distro 不等于自动生效
勾选这个开关只是告诉 Docker Desktop “允许我对接默认发行版”,但真正起作用还需两个前提:
-
wsl --shutdown必须执行一次——Docker Desktop 的集成逻辑在 WSL 实例启动时注入,不重启 WSL,新配置不会加载 - Ubuntu(或其他发行版)的
/etc/wsl.conf中不能有enabled=false或interop=false这类禁用项 - 若使用非默认发行版(如
Ubuntu-22.04而非Ubuntu),必须单独勾选它,而不是只开 default 开关
验证是否成功:在 Ubuntu 终端中运行 docker --version 和 docker ps,两者都应返回结果而非报错 Cannot connect to the Docker daemon。
resolv.conf 被重写导致 docker pull 失败
即使 WSL Integration 显示已启用,docker pull 仍可能报 lookup registry-1.docker.io: no such host。这不是集成失败,而是 WSL 自动管理 DNS 的机制与 Docker Desktop 冲突。根本原因是 WSL 默认每次启动都会覆盖 /etc/resolv.conf,而 Docker Desktop 的 DNS 解析依赖它。
解决步骤固定三步:
- 在 Ubuntu 中运行
sudo nano /etc/wsl.conf,加入:[network]\ngenerateResolvConf = false
- 再运行
sudo nano /etc/resolv.conf,清空内容,写入:nameserver 114.114.114.114\nnameserver 8.8.8.8
- 回到 PowerShell(管理员),执行
wsl --shutdown,再重新打开 Ubuntu 终端
这三步缺一不可。跳过 generateResolvConf = false,下次 wsl 启动时 DNS 配置又会被刷掉;不执行 wsl --shutdown,修改完全不生效。


















