作为一名在Windows平台使用Docker近五年的开发者,我深知在Windows上配置Docker环境的痛点。不同于Linux原生支持Docker,Windows需要通过虚拟化技术搭建Linux环境才能运行Docker。本文将详细解析Windows安装Docker的完整流程,包括WSL2配置、系统要求检查、常见问题排查等关键环节,并提供多个实测有效的优化技巧。
Docker Desktop for Windows要求必须是Windows 10或11的64位系统,且版本号需满足:
检查方法:
注意:家庭版Windows需要先升级到专业版或企业版才能使用Hyper-V功能。如果不想升级系统,可以仅使用WSL2后端。
现代CPU都支持虚拟化技术(Intel VT-x或AMD-V),但可能需要在BIOS中启用:
如果显示禁用,需要:
不同于网上大多数教程建议的,实际只需要启用两个功能:
操作步骤:
powershell复制# 使用管理员权限打开PowerShell执行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启后,将WSL2设为默认版本:
powershell复制wsl --set-default-version 2
微软提供了极简安装方式:
powershell复制wsl --install
这个命令会自动完成:
如果需要特定Linux发行版:
powershell复制wsl --set-version <发行版名称> 2
默认情况下WSL虚拟磁盘存放在系统盘,可以通过以下方式管理:
powershell复制wsl --list -v
powershell复制wsl --export Ubuntu ubuntu.tar
wsl --import UbuntuNew D:\wsl\ ubuntu.tar --version 2
powershell复制wsl --shutdown
diskpart
select vdisk file="C:\Users\<用户名>\AppData\Local\Packages\<发行版>\LocalState\ext4.vhdx"
compact vdisk
首次启动前建议配置:
资源限制(Settings > Resources):
WSL集成(Settings > Resources > WSL Integration):
在PowerShell中测试:
powershell复制docker run --rm hello-world
成功运行会显示欢迎信息。如果遇到错误:
powershell复制wsl -l -v
powershell复制net stop com.docker.service
net start com.docker.service
powershell复制docker pull ubuntu:20.04
powershell复制docker images
powershell复制docker image prune -a
powershell复制docker run -it --name my_ubuntu ubuntu:20.04 bash
powershell复制docker ps
powershell复制docker stop my_ubuntu
docker rm my_ubuntu
Windows与WSL2之间的文件访问:
\\wsl$\<发行版名称>/mnt/c/...容器数据卷使用:
powershell复制docker run -v D:/data:/container/path -d nginx
文件IO慢:
内存占用高:
powershell复制netstat -ano | findstr :端口号
powershell复制docker network prune
"WSL2 installation is incomplete":
wsl --update"Docker Desktop stopped...":
powershell复制Get-Service LxssManager | Restart-Service
powershell复制wsl --set-default <发行版名称>
通过Docker CLI切换上下文:
powershell复制docker context use desktop-linux
使用内置监控工具:
powershell复制docker stats
或使用第三方工具如cAdvisor:
powershell复制docker run -d --name=cadvisor -p 8080:8080 --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro gcr.io/cadvisor/cadvisor
经过以上步骤,你应该已经在Windows上成功搭建了完整的Docker开发环境。我在实际使用中发现,WSL2后端比传统Hyper-V模式性能更好,特别是在文件IO方面。对于开发者而言,这套环境已经可以满足绝大多数容器化开发需求。