10 分钟避坑教程:WSL 在 Windows 装 Docker 的常见问题解决
·
安装前的系统检查
确保 Windows 10 版本为 2004 或更高(内部版本 19041 或更高),可通过 winver 命令验证。低于此版本需升级系统或使用 Docker Desktop 替代方案。
启用 WSL 2 功能,以管理员身份运行 PowerShell 执行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
解决 WSL 2 内核更新失败
下载最新 WSL 2 内核更新包(微软官方链接),安装后执行:
wsl --set-default-version 2
若报错"参考的对象类型不支持尝试的操作",需禁用 Hyper-V 相关冲突:
netsh winsock reset
配置 Docker Desktop 与 WSL 集成
安装 Docker Desktop 时勾选"Enable WSL 2 Backend"。安装完成后进入 Settings > Resources > WSL Integration,启用对应发行版的集成开关。
若遇到"WSL 2 installation is incomplete"警告,检查 BIOS 中虚拟化技术(VT-x/AMD-V)是否启用,并确保未与其他虚拟化软件(如 VirtualBox)冲突。
解决端口冲突问题
WSL 2 使用独立虚拟机网络,localhost 可能无法直接访问容器端口。解决方案:
- 使用
host.docker.internal代替localhost - 获取 WSL 2 IP 地址:
ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
- 在 Docker 配置中显式暴露 IPv4 端口:
# docker-compose.yml 示例
services:
app:
ports:
- "0.0.0.0:8080:80"
磁盘空间优化
WSL 2 虚拟硬盘默认自动扩展但不会收缩,定期清理可执行:
# 在 WSL 终端内
sudo apt clean
docker system prune -a
手动压缩虚拟磁盘:
wsl --shutdown
diskpart
# 在 DISKPART 中执行:
select vdisk file="C:\Users\<user>\AppData\Local\Packages\<distro>\LocalState\ext4.vhdx"
compact vdisk
文件系统性能问题
避免在 Windows 文件系统(如 /mnt/c)中操作 Docker 卷,应在 WSL 2 原生文件系统(如 /home)中创建项目目录。跨系统文件操作会导致性能下降和 inotify 事件失效。
对于需要共享的目录,使用 Docker 命名卷而非直接挂载:
docker volume create project_data
docker run -v project_data:/data your_image
解决 DNS 解析故障
若容器内出现 DNS 解析失败,在 WSL 2 中创建或修改 /etc/wsl.conf:
[network]
generateResolvConf = false
然后手动指定 DNS 服务器:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
在 Docker 配置中修改 DNS 设置:
// %programdata%\docker\config\daemon.json
{
"dns": ["8.8.8.8", "1.1.1.1"]
}
更多推荐
所有评论(0)