省流版:
在“启用或关闭Windows功能”中同时勾选 Hyper-V和WSL(适用于Linux的Windows子系统)选项
原因
至于原因,GPT给出的解释是这样的:
踩坑过程
首先我参考了这篇教程:Windows安装使用Docker,方便你的开发和部署(DockerDesktop篇)_windows安装docker-CSDN博客
这篇文章中说“Windows中的Docker它可以依赖于两种环境,分别是:Hyper-V,WSL......那我这里就默认选择Windows的Linux子系统了,Hyper-V我不是很推荐,相信我直接选择WSL吧,WSL好很多,Hyper-V直接不去看。”我就在启用或关闭Windows功能中只勾选了WSL。
在官网下载好Docker Desktop Installer,安装的最后一步总是报错点击Quit后出现以下界面好像在加载但一直加载不出来而且过一会就会闪退
我以为是我WSL安装的有问题,把报错信息复制下来在网上搜,跟着教程在powershell中输入以下命令
wsl --set-default-version 2
wsl --update
返回的结果都挺正常的随后我跟着官网官网上安装 WSL |Microsoft 学习输入了
wsl --install
发现返回的是帮助文档,说明我已经安装过WSL了(官网解释如下)
我输入以下命令查看已安装的Linux发行版
wsl -l -v
发现空空如也,也就是说我没安装任何Linux发行版,我以为问题出在了这里,就通过以下命令在WSL中安装了Ubuntu
wsl --install -d Ubuntu
到这时我认为万事俱备,再次尝试安装docker desktop发现依旧报同样的错误。
这时我才把关注点转移到了最开始在“启用或关闭Windows功能”中只勾选了WSL,而没有勾选Hyper-V这一点上。
参考教程:在国内 Windows 平台上安装 Docker 的详细教程_docker windows amd-CSDN博客
于是我把Hyper-V也勾选上重新安装docker desktop就成功了。对此GPT给出的解释是:
至于我之前在WSL中装的Ubuntu实际上和docker并无关系。再次用wsl -l -v检查已安装的Linux发行版时结果如下。Ubuntu 和 docker-desktop 是两个独立的WSL实例。Ubuntu 是我之前在 WSL 中安装的一个 Linux 发行版,而 Docker Desktop 使用自己的 WSL 实例,名为 docker-desktop,它在后台支持 Docker 的运行。
这里的Ubuntu就没什么用了,通过一下命令停止并彻底删除它
wsl --terminate Ubuntu
wsl --unregister Ubuntu
这样在运行的实例就只有docker-desktop一个了。