Docker Desktop 4.80–4.91 修复摘编:共享目录上的 git、mmap() 和 renameat2
信源:Docker Desktop 官方 release notes;历史版本文档在 docker/docs previous-versions。官方在 release notes 里说明,版本是渐进式推送的,最新版可能一周内才轮到你;比最新版早 6 个月以上的版本不再提供下载。
文件共享与挂载目录
bind-mount root 属主报成 0:0,git 报 detected dubious ownership
4.90.0 修掉一个间歇性问题:bind-mount 根目录的属主有时被报成 0:0,于是 git 输出 detected dubious ownership。见 docker/desktop-feedback#628。
Synchronized File Share 上 mmap() 失败,git 和 pnpm 一起挂
同一版本修掉:对 Synchronized File Share 上的文件调用 mmap() 失败并报 No such device,直接打断 git 和 pnpm。见 docker/desktop-feedback#627。
renameat2(RENAME_EXCHANGE) 覆盖目标而不是交换
4.90.0 修复:共享目录上执行 renameat2(RENAME_EXCHANGE) 时,实现把目标文件覆盖掉,而不是交换两个文件。依赖原子替换语义的工具(写临时文件再交换的那类)会拿到错误结果。
反复替换文件泄漏 VM 磁盘空间
同样是 4.90.0:在共享目录里反复替换文件会持续泄漏 VM 磁盘空间,直到重启 Docker Desktop 才回收。见 docker/desktop-feedback#619。
4.80.0 起:osxfs 退场,VirtioFS 不再持久化属主变更
4.80.0 移除了 legacy 的 osxfs 文件共享,仍在用 osxfs 的用户被迁移到 VirtioFS。同时提升了 VirtioFS 性能:不再把(假的)文件属主变更持久化到宿主机上——chown 调用会成功,但 stat 不受影响,所以别指望在宿主机看到属主变了。
这个版本还处理了 CVE-2026-8936:容器在 bind-mount 目录里创建极深嵌套目录并触发 dentry invalidation 时,grpcfuse 内核模块的无界递归会导致 VM panic。
另外两处顺带修的:docker -c desktop-linux 在 cloud context 激活时会把命令静默路由到 cloud engine,而不是本地 desktop-linux engine;实验性的 docker sandbox 插件被移除,迁移到 docker sbx。
网络库损坏、Engine 停机与 shell 配置
网络数据库损坏,只剩恢复出厂
4.91.0 修掉:Docker 网络数据库损坏(通常由异常关机引起)会让 Docker Engine 起不来,并且唯一可用的恢复手段是恢复出厂设置。如果你的机器经历过断电或强制关机后 Engine 直接罢工,这条是对应的。
Engine 停机时 stop 超时、unless-stopped 不生效
4.86.0 修复了 engine shutdown 期间的容器停止超时,以及 unless-stopped 重启策略不被遵守的问题。同一版本里,AF_UNIX socket 经 VirtioFS 共享后可以双向工作(host→guest 和 guest→host)。
VM 意外停止后,引擎状态要多等五分钟
4.91.0 修复:虚拟机意外停止时,Docker Desktop 有时会多花五分钟才把引擎状态报告为 stopped。
csh/tcsh 的 PATH 被写坏
4.91.0 修复:在把 ~/.docker/bin 加进 PATH 时,Docker Desktop 会往 csh/tcsh profile 里写非法的 export PATH 语法。用 csh/tcsh 的话,升级后顺手看一眼 profile 文件。
Zsh 启动慢:.zshrc 里重复的 completion
4.89.0 修复了 .zshrc 中重复的 Docker CLI completion 配置导致的 Zsh 启动变慢。Docker Desktop 现在只保留一个 completion block 并清理已有重复项。见 docker/desktop-feedback#561。
macOS 侧 4.91.0 还补了 kubectl 的 shell completions,见 docker/for-mac#7205。
怎么判断自己中招
- 在挂载目录里 git 提示
detected dubious ownership,或git、pnpm在 Synchronized File Share 上直接报No such device:对应 4.90.0 的两条修复,升到 4.90.0 及以上。 - 共享目录里依赖原子交换的写文件流程结果不对,或反复替换文件后 VM 磁盘镜像只涨不落:同样指向 4.90.0 的
renameat2与空间泄漏修复。 - Docker Engine 在异常关机后彻底起不来,dashboard 只给恢复出厂这一条路:4.91.0 修的就是这个。
docker stop卡在超时、unless-stopped容器在引擎停机时行为不符预期:对应 4.86.0。- Zsh 启动变慢:检查
.zshrc里是否有重复的 Docker completion block,对应 4.89.0 与 docker/desktop-feedback#561。
怎么处理
先确认版本。4.91.0 打包的组件为 Docker Engine v29.8.0、containerd v2.3.4、Docker Compose v5.5.1、Docker Agent v1.136.0、Docker Desktop Build v0.38.0、Docker Buildx v0.37.0、Docker Offload v0.6.17、Credential helpers v0.9.9。文件共享相关的四条集中在 4.90.0,网络库损坏和 csh/tcsh PATH 在 4.91.0,Zsh completion 在 4.89.0,unless-stopped/stop 超时在 4.86.0。
仍在 osxfs 上的话,4.80.0 会把你迁到 VirtioFS;迁移后 chown 在容器里成功、宿主机 stat 不变属正常行为,不是坏了。
安全方面,4.86.0 还处理了 CVE-2026-17106,docker container cp 的目标逃逸问题;更早的公告集中在 Docker Model Runner(4.71.0、4.68.0、4.67.0、4.62.0)和 gRPC-FUSE 内核模块(4.62.0 的 CVE-2026-2664)。完整列表在官方安全公告页。
边界
按官方 release notes 描述,上述修复描述的均为「已修复」状态,触发条件以各条目的原文为准,比如网络数据库损坏写的是「通常由异常关机引起」。版本推送是渐进的,升级后没看到对应版本号不代表链接失效,稍等推送即可。属于 6 个月以上窗口之外的旧版本,官方不再提供下载。