离线 Windows 上运行 docker Desktop 报错,com.docker.service 服务始终起不来,花了一个星期,在网上找了一圈,试了无数方法,后来台式机一连网,重启服务,OK了。。。这篇文章内容可能有些乱,但对于初学 docker 的人也许有帮助。
起因:
下载了最新的 docker 安装在 离线的台式机上,启动了一个大型 Linux容器,运行正常。后来想要安装一下 portainer 容器更好地管理容器,在连接本地docker的步骤时遇到了 pipe_engine 之类的问题,最终搞定。然后重启,周一一来,哦吼,docker起不来了。
然后会出现这样的报错信息:
一般来说,第一个窗口出现不一定有问题,只要选择 Start 即可,这是因为旧版本Win10 不适合新版本docker,但也能运行。
然后第二个窗口出现就不行了。这是真有问题了。
我按照提示 Reset to factory defaults 恢复出厂设置也没用。依然如上报错。
遇到过的报错信息:
这是警告我都 windows 版本是17763 的版本,太旧了。因为Win10 1904 之前的版本都无法运行 wsl2,所以它认为太旧。
但是呢,docker其实有两种运行方式,wsl2 或者 wsl1 + Hyper-V,后者据说运行更慢。如果你的Windows 不方便更新系统,那么就只能采用后者了,我就是这样做的。
如果你的win10 能够更新到 1904 以后的版本,比如 22H2,那么就可以直接用 Wsl2 功能作为 docker 基底。
遇到问题要如何逐步排查?
检查步骤
0. 确认 Windows 版本是 1094 前还是后的版本
1904 前的版本,默认用的是 wsl+Hyper-V
1904 后的版本,默认用的是 wsl2
win->设置->系统->关于:
如果是这个版本默认会采用 wsl2。
1.确认 server 是启动的:
win+R 输入 services.msc 回车,打开服务管理器。
如果不是 “正在运行” 状态,就双击这行,弹出的窗口中,点击 “启动”。
2. 检查 Hyper-V :
win+R-> 输入 control 回车,-> 程序->程序和功能,启动或关闭 Windows 功能->找到 Hyper-V ,打勾即可。
一般来说,这两步能够解决大部分人遇到的问题了,而我不属于大部分人。。。
3. 确认Docker Desktop Service 处于启动状态。
我的问题主要就出在这张图, docker 的服务未启动。未启动的原因有很多,而我的原因猜测可能是安装 portainer 的时候选择的链接问题(已经无法找到根源)。
同第一步,尝试启动。成功启动的话,恭喜你,解决了,重启docker即可。
如果失败,报错 1053:服务并未及时响应启动或控制请求。启动失败了。
说明你的情况应该和我类似,已经无法通过重启服务来解决问题了。
如果你也到了这一步,并且也已经联网尝试过重启服务和docker 都不起作用的话,只能再找其它原因了。
此时,可以通过命令 docker info 查看到错误:
在 Server 端,似乎需要联网路径 http://…,所以离线是运行不了 docker 的。
ps: 我的 docker 联网一次能够启动服务以后,离线也可以再次启动了。后续启动容器也都正常。但是长时间关机后,重启系统,docker又会去获取,然后又会启动失败。所以 docker 必须联网才能用。
如果你想要卸载 docker 重装的话,建议先查看一下正确卸载方式,避免焦头烂额地一个个删除:正确卸载docker