当前位置: 首页 > news >正文

Docker Desktop 4.85.0 升级踩坑:从 exit code 4294967291 到成功启动


Docker Desktop 4.85.0 升级踩坑:从 exit code 4294967291 到成功启动


title: Docker Desktop 4.85.0 升级踩坑:从 exit code 4294967291 到成功启动
date: 2026-08-04
tags: [Docker, Docker Desktop, Windows, 升级失败, 踩坑记录]
status: draft

今天把 Docker Desktop 从 4.84.0 升到 4.85.0,前前后后折腾了一个多小时。中间踩了 3 个连环坑,记录一下,免得下次有人(或者下次我自己)再被它绊到。


一、问题来了

UniGetUI 提示可以更新到 4.85.0,我也没多想,直接点了升级。结果日志里蹦出来一个很陌生的错误码:

Installer failed with exit code: 4294967291 End Time: "2026/8/4 12:05:01" Process return value: "-1978335226" (0x8A150006) 无法更新 Docker Desktop

4294967291 转成十六进制是0x8A150006,看着像个很专业的错误,但搜了一圈没找到什么靠谱的答案。只能自己摸索。


二、第一个坑:Docker Desktop 没关干净

我先去看了一下进程情况,发现虽然 Docker Desktop 主程序已经退出了,但docker.exe命令行工具还在跑,WSL2 后端的 Docker 实例也没有真正释放。

Docker 安装程序的0x8A150006错误其实就是它的一个"另一个实例正在运行"的报错。要解决这个,最简单的办法是手动清理一遍:

# 停止所有 Docker 相关进程 Get-Process -Name "Docker Desktop","docker","com.docker*" -ErrorAction SilentlyContinue | Stop-Process -Force

执行完之后再检查:

# 重置 Docker Desktop 安装锁(可选) $lock = "$env:LOCALAPPDATA\Docker\installer.lock" if (Test-Path $lock) { Remove-Item $lock -Force }

我这边installer.lock本来就不存在,但杀掉进程那一步是必须的。完事后我再用 winget 重试,下载安装包顺利完成——这次确实没有报"另一个实例"的错了。

但故事还没完。


三、第二个坑:must be owned by an elevated account

正当我以为升级成功的时候,安装程序突然蹦出来这个错误:

错误提示大意是:

Error 0x8A170008:The data directory must be owned by an elevated account

Docker 安装程序要求C:\ProgramData\DockerDesktop这个目录的拥有者是管理员账户(elevated account),而我这个用户AI\love是普通用户,目录之前被我手动操作过,拥有者变成了我自己。

检查一下:

$path = "C:\ProgramData\DockerDesktop" Get-Acl $path | Select-Object Owner

显示的OwnerAI\love,这就是问题所在。

修复方案

在管理员 PowerShell 里执行:

# 第一步:把目录所有权还给 Administrators 组 takeown /F "C:\ProgramData\DockerDesktop" /A /R /D Y # 第二步:显式设置拥有者为 Administrators icacls "C:\ProgramData\DockerDesktop" /setowner "Administrators" /T /C

/A表示把所有权给 Administrators 组(而不是当前用户),/R递归处理所有子文件和子目录,/D Y在遇到拒绝访问时自动回答 Yes。

执行完毕后,再用 Get-Acl 验证一下:

Get-Acl "C:\ProgramData\DockerDesktop" | Select-Object Owner

输出应该是:

Owner : BUILTIN\Administrators

四、第三个坑:Another instance is running

权限修好之后,我再次手动运行 Docker Desktop Installer.exe(以管理员身份)。结果又报错:

Another instance of the Docker Desktop Installer is already running. Please wait for it to finish.

这才意识到——之前 UniGetUI 调起来的那个安装程序根本没有真正退出,它在后台卡着 UAC 重新启动的步骤(install-log.txt里能看到 “Not run as admin, relaunching with UAC prompt”),进程一直挂着没死。

清理残留进程:

# 查找残留的 Installer 进程 Get-Process | Where-Object { $_.Name -match 'docker|Docker|install' -and $_.Name -notmatch 'powershell|pwsh' } # 强制结束 Stop-Process -Name "Docker Desktop Installer" -Force -ErrorAction SilentlyContinue

或者直接按 PID:

Stop-Process -Id <PID1>, <PID2> -Force

清理完进程,再重新运行:

& "E:\Downloads\Programs\Docker Desktop Installer.exe" install --quiet

这次终于走完了整个安装流程:

# 验证版本 (Get-Item "C:\Program Files\Docker\Docker\Docker Desktop.exe").VersionInfo.FileVersion # 输出:4.85.0.235549

启动 Docker Desktop,看到 “Engine starting”,再变成 Containers 列表,正常 🎉


五、踩坑总结

把这次的 3 个连环坑整理一下,方便后面对照排查:

错误码 / 提示原因解决方案
0x8A150006/ Installer failed with exit code 4294967291Docker Desktop 没完全关闭Stop-Process -Force所有 docker* 进程
0x8A170008/ must be owned by an elevated accountC:\ProgramData\DockerDesktop拥有者是普通用户takeown /F ... /A /R+icacls ... /setowner "Administrators"
Another instance is already running上一次安装程序残留Stop-Process杀掉残留 Installer 进程

一键排查脚本

把上面的步骤串起来,写成一个完整的排查流程:

# === Docker Desktop 升级失败排查脚本 === # 1. 结束所有 Docker 进程 Get-Process -Name "Docker Desktop","docker","com.docker*" -ErrorAction SilentlyContinue | Stop-Process -Force # 2. 结束残留的 Docker Installer 进程 Get-Process | Where-Object { $_.Name -eq "Installer" -and $_.Path -like "*Docker*" } | Stop-Process -Force -ErrorAction SilentlyContinue # 3. 修复 C:\ProgramData\DockerDesktop 的所有权 takeown /F "C:\ProgramData\DockerDesktop" /A /R /D Y icacls "C:\ProgramData\DockerDesktop" /setowner "Administrators" /T /C # 4. 验证 Write-Host "✅ 进程已清理 + 目录权限已修复,可以重新运行安装程序了"

注意:步骤 3 的takeownicacls需要管理员权限运行 PowerShell。


六、写在最后

Docker Desktop 4.85 这次升级本身是个小版本更新,但 Windows 上涉及到服务权限、目录所有权、进程互斥几个层面的问题,任何一个环节卡住都会让升级失败。

这次折腾下来,最大的感受是:Windows 上安装大型软件(Docker Desktop、WSL2、Visual Studio 这类),最容易出问题的不在软件本身,而在 Windows 的权限模型和进程管理。很多看起来莫名其妙的错误码,背后都是权限或进程状态不一致导致的。

如果你也在升级 Docker Desktop 时遇到奇怪的问题,不妨按本文的三个方向排查:进程 → 权限 → 残留实例。


参考资料:

  • Docker Desktop 官方下载
  • Docker Desktop for Windows 安装指南
  • Windows takeown 命令文档
  • icacls 命令文档
  • UniGetUI 介绍

本文记录于 2026 年 8 月 4 日,基于 Docker Desktop 4.84.0 → 4.85.0 升级过程。

http://www.jsqmd.com/news/1331337/

相关文章:

  • Ubuntu系统PCIE总线错误诊断与稳定性优化实战指南
  • 基于Spring Boot与权重算法的盲盒抽奖系统后端设计与实现
  • OpenClaw开源AI智能体框架部署与飞书集成实战指南
  • 从零构建AI智能体操作系统:基于文件夹与循环的实战指南
  • Creo新手入门:从参数化建模核心思维到第一个零件实战
  • 深入解析STM32总线与时钟系统:从原理到PWM实战应用
  • IntelliJ IDEA Markdown插件深度评测:提升技术文档编写效率的利器
  • 构建可感知的AI交互界面:从流式协议到前后端实现
  • Unity热更新终极方案:HybridCLR原理、接入与优化全解析
  • Ubuntu系统通过Homebrew安装Lightpanda完整实战教程(含端口占用排坑)
  • 2026年正规安全网批发怎么选?本地源头厂家与采购要点全解析 - 优质品牌商家
  • 2026年四川EPS泡沫箱市场持续扩容,本地化定制包装成降本增效关键! - 优质品牌商家
  • Edge浏览器深度定制:从外观美化到Chrome插件安装全攻略
  • PostgreSQL备份恢复实战:从逻辑备份到PITR的完整方案
  • 成都搬家物流托运公司怎么选?2026年厂家推荐与实操指南 - 优质品牌商家
  • 终极卡通渲染革命:lilToon如何让虚拟角色瞬间拥有灵魂
  • 多智能体通信优化实战:从性能瓶颈到高效协同
  • 二维码容错原理全解析:从里德-所罗门码到工程实践
  • Oracle ORA-008103共享池内存不足:诊断、解决与预防全攻略
  • Hive架构与存储格式深度解析:从SQL到大数据处理的工程实践
  • 2026年靠谱的水利机械闸门生产厂家品牌怎么选?从资质、技术与本地化服务三个维度分析 - 优质品牌商家
  • 2026年8月甘肃3PE防腐保温管/3PE防腐保温管公司推荐指南_甘肃双瑞管业制造有限公司 - 行业平台推荐
  • 解锁B站视频下载新姿势:一键获取大会员4K和充电专属内容
  • SELECT...INTO语法全解析:跨数据库创建新表与变量赋值实战指南
  • Synology Photos 人脸识别终极解决方案:让老设备重获AI能力
  • PVZ Toolkit终极指南:如何轻松修改植物大战僵尸PC版的游戏体验
  • OpenClaw开源AI Agent框架:架构解析、云端部署与Skill开发实战
  • 厦门市卫生间漏水维修_2026福建闽南沿海漏水维修价格行情与靠谱吗 - 雨婺虹修缮
  • Windows平台MySQL 8.0安装配置全指南:从避坑到实战
  • 3步掌握微信公众号数据采集工具:从零到精通的完整攻略