我们相信:世界是美好的,你是我也是。 来玩一下解压小游戏吧!

docker engine stopped,到底是什么?为啥每次安装docker desktopwindows最新版,都会碰到这个错误提示!而且怎么卸载重装都不行,真是离了大谱了。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - docker-desktop-engine-stopped
win版本dockerdesktop,engine stopped如何解决?(图15-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10wsl@2docker@20.18.0docker desktop@4.40.0。本文的结论:最新版的docker desktop也不是根本没有办法使用,只是需要先清除一下一些残余数据。

前文回顾

先看一下以前的文章:

这篇文章里面,苏南大叔说推荐使用docker desktop@4.1.1,因为能正常安装使用。而最新版本的docker desktop,总是会报错“docker engine stopped”。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - engine-stopped
win版本dockerdesktop,engine stopped如何解决?(图15-2)

docker desktop 4.1.1【老版】

后续的使用过程中,苏南大叔发现:
docker desktop 4.1.1版下,在执行docker compose up -d时,遇到dify/docker.env文件的时候,会遇到.env文件解析失败的问题。而且dify官方坚持不修改的前提下,显然这是个docker desktop版本导致的不兼容问题。所以,需要尝试升级docker desktop的版本号。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - env文件解析失败
win版本dockerdesktop,engine stopped如何解决?(图15-3)

docker desktop 4.40.0【新版】

安装最新版docker desktop 4.40.0,依然是docker engine stopped。为了解决这个问题,请依次排查,然后重启系统。

删除旧配置文件

在下面的路径下,保留着上一个版本的配置文件,特别是daemon.json配置,变化比较大。由于卸载动作并不会删除它,所以排除方案就是需要确认没有老版本配置的影响。

C:\Users\<user>\.docker

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - docker老配置文件
win版本dockerdesktop,engine stopped如何解决?(图15-4)

C:\Users\<user>\AppData\Roaming\Docker\
C:\Users\<user>\AppData\Roaming\Docker Desktop\

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - docker旧文件
win版本dockerdesktop,engine stopped如何解决?(图15-5)

安装选项

安装的时候,两个选项变成了三个选项。中间的选项“allow windows containers to be used with this installation”默认是没有勾选的。不选择它,因为选择了之后有个警告信息。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 安装首选项
win版本dockerdesktop,engine stopped如何解决?(图15-6)

安装完成后,需要点击同意按钮。(这个时候,就可能会看到docker engine stopped提示了。)在setting中,确认使用wsl2

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - setting-general-use-wsl2
win版本dockerdesktop,engine stopped如何解决?(图15-7)

docker engine service【可选】

在“此电脑->管理->服务”路径下,可以看到相关的服务类型是“手动”,修改为“自动”,然后点击开始服务。

后来事实证明:engine stopped可能和这个服务没有关系。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 服务状态
win版本dockerdesktop,engine stopped如何解决?(图15-8)

确保wsl2及相关组件

执行命令:

wsl --update

当然,也可以按照下面的文字,再次确认wsl2已经被正确安装。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - wsl-update
win版本dockerdesktop,engine stopped如何解决?(图15-9)

清除wsl2和hyper-v容器

因为windows版本的docker,实际上背后是hyper-vwsl2。这个是大家都知道的事情。在托盘图标上面点击右键,有个 TroubleShoot菜单,里面有两个设置:“Clean / Purge data” 和 “Reset to factory defaults”,【请谨慎】执行它们。数据及配置会丢失!!!

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 重置0
win版本dockerdesktop,engine stopped如何解决?(图15-10)

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 重置1
win版本dockerdesktop,engine stopped如何解决?(图15-11)

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 重置2
win版本dockerdesktop,engine stopped如何解决?(图15-12)

防火墙允许通过

防火墙需要允许“com.docker.backend”通过。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 防火墙
win版本dockerdesktop,engine stopped如何解决?(图15-13)

解决问题

重启之后,居然可以使用了!这可是个巨大的进步。

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 最新版本的docker
win版本dockerdesktop,engine stopped如何解决?(图15-14)

最后,记得勾选开机启动,在设置的通用项目里面。见下图:

苏南大叔:win版本dockerdesktop,engine stopped如何解决? - 开机启动项目
win版本dockerdesktop,engine stopped如何解决?(图15-15)

这里还有后文,设置开机启动的时候,注意卸载某数字卫士。不解释。

结语

整体上来看,应该不是docker服务没启动的原因。应该是老数据不兼容的问题。所以,重置一切和老版本数据有关的地方,就可能可以顺利运行了。顺便说一下,对于.env文件,最新版本的docker compose能够处理“带空格”的情况。

苏南大叔的更多docker相关文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   docker