起因
我有一个朋友,想要学习AI 方面的案例。但是苦于手头没有Linux server,就问我能不能在他的windows电脑上跑docker-compose 项目。
我稍微折腾后发现:在2025年的今天,想要在windows上运行docker容器,还是有几个门槛在这里的——很容易因为一些小的设置卡好几个小时。所以,在这里汇总并分享下。
如果对你有帮助,帮忙点个赞支持一波 ^^
评估是否有必要
就像上面提到的,是因为条件受限才考虑在windosw上跑docker 应用。
如果以下情况满足3条以上,那这种情况适合你——
- 手头没有类Linux环境(如 Ubuntu、Rocky)
- 手头有运行Linux的环境,但是硬件不是x86架构的
- 偶尔跑一些docker项目(即docker 应用不需要 7*24 长时间运行)
- 只运行docker 应用,不需要开发docker应用
另外在windows 上运行docker 应用对软硬件系统也是有要求的:
- win10 要求21h2以上版本 + 64位 家庭版 或 专业版 或 企业版
- win11 要求22h2以上版本 + 64位 家庭版 或 专业版 或 企业版
- 需要CPU支持虚拟化技术(Intel VT-x 或 AMD-V),并在BIOS 中启用
- 4GB 以上内存
- 需要有管理员权限,以便安装docker-desktop程序和windows组件
安装
如果以上的诸多条件和限制,还没有打消你的念头。好吧,头铁的朋友,这篇文章就是为你而写的!
0. 准备工作
-
检查上述软硬件要求是否满足
-
需要自备梯子,主要用于拉取docker image文件
1. 安装wsl
wsl 全名为 “Windows Subsystem for Linux”,为windows 下运行docker 的底层环境——毕竟windows 和 Linux 是两套内核。
安装起来倒是不复杂,一条命令:
|
|
重启后,查看wsl版本信息:
2. 安装docker-desktop
从docker 官方网站 下载Docker-Desktop for windows AMD64。
双击docker-desktop安装包执行安装,安装完成后“重启”电脑。
3. wsl 和 docker-desktop 关联成功
重启后,会看到wsl 启用成功的通知:
因为,是先安装的wsl 后安装的docker-desktop。docker-desktop 此时已经默认调用了wsl 集成环境。(不用手动修改)
使用命令也可以看到,两者已经关联并运行了:
同时,电脑中会多出一个Linux 的企鹅图标。不用管它。
4. 修改docker-desktop 设置
在docker-desktop 的设置中,有三处需要修改。
- 因为,docker-desktop 安装时默认使用C盘保存 docker 镜像文件。
下载镜像文件多了后,很容易导致C 盘空间占满。所以这一步,需要手动更改镜像文件保存路径(image location)。
例如,我改为 *E:\docker_images* 目录下:
- 另外,还需要指定代理环境(使用梯子代理服务端口),以便后续拉取docker 镜像:
-
[Option] 如果没有梯子,可以尝试使用国内的docker 镜像站(注:可能不稳定):
拉取镜像&验证
参照以之前n8n 自部署 (nxlan.cn)初始化案例。这里先创建n8n项目目录"n8n-data“和 “docker-compose.yaml“项目文件。
然后使用以下命令启动该项目——
|
|
启动成功日志——
同样的,docker-desktop 中的images 界面可以看到刚刚拉取到的镜像文件和相关信息(版本,大小,运行情况):
最后,登录本地n8n环境。证明所有安装完成。
补充说明
v4.45版本额外操作
[v4.45] 版本的docker-desktop 版本有bug,无法在“设置”中修改images镜像保存位置,所以只能通过powershell 命令行操作。
注: 经测试[v4.48] 版本修复了这个bug,无需以下命令行方式修改,通过图形化设置界面就可以修改。
1 临时关闭wsl 服务
|
|
2 导出并备份wsl 原有数据文件
|
|
3 注销原有docker-desktop 数据文件
|
|
4 导入并重新关联新位置的docker-desktop 数据文件
|
|
wsl 运行环境限制
目前测试发现,受限于wsl的安全策略:
windows环境下的docker实例,访问某个目录中的数据时,不能使用相对路径,必须使用绝对路径。
例如,希望把 docker-compose.yaml 所在目录下的 app\data同时挂载给 docker A,不能这么写——
|
|
而是需要使用绝对路径——
|
|
后续如果需要卸载wsl和docker-desktop
卸载docker-desktop 和平常卸载软件没什么区别。
卸载 wsl 也是一句命令即可:
|
|
