编码代理与终端 · 收录于 2026-08-30 · 适用 1 工具 ✓ 实测验证

Docker Desktop 启动失败:The file cannot be accessed by the system / 孤儿 AF_UNIX socket

已验证 2026-08-30Docker Desktop 启动失败 The file cannot be accessed——停掉所有 Docker 进程后重命名(不能删)%LOCALAPPDATA%\Docker\run 父目录。

快速修复

# 1. 停掉所有 Docker 进程(退出 Docker Desktop)
Get-Process | Where-Object { $_.ProcessName -like '*Docker*' } | Stop-Process -Force

# 2. 不能删文件,只能重命名父目录(两个都要)
Move-Item "$env:LOCALAPPDATA\Docker\run" "$env:LOCALAPPDATA\Docker\run.old-<日期>"
Move-Item "$env:LOCALAPPDATA\docker-secrets-engine" "$env:LOCALAPPDATA\docker-secrets-engine.old-<日期>"

# 3. 确认关闭 DockerAI(settings-store.json 里 EnableDockerAI=false,否则 Inference 又杀启动)

# 4. 直接启动 Docker Desktop 并轮询就绪
Start-Process 'C:\Program Files\Docker\Docker\Docker Desktop.exe'
docker version --format '{{.Server.Version}}'   # 循环等它出现

你会遇到什么

Docker Desktop 引擎起不来,GUI 弹「An unexpected error occurred」;com.docker.backend.exe.log 里是:

starting services: initializing Ingest server: listening on unix://C:/Users/<user>/AppData/Local/Docker/run/sailor-ingest.sock: remove ...: The file cannot be accessed by the system

更烦的是「修好一个下一个又报」:sailor-ingest.sock → docker-secrets-engine/engine.sock → dockerInference,每次重启换一个 socket。常见诱因:Docker Desktop 非正常退出(强制结束进程、崩溃、断电),或 docker desktop start CLI 挂起后中断。

本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。

为什么会这样

Docker Desktop 非正常退出后,%LOCALAPPDATA%\Docker\run\ 与 %LOCALAPPDATA%\docker-secrets-engine\ 留下孤儿 AF_UNIX socket 文件,。

这些文件带 ReparsePoint 属性,Windows 拒绝删除(error 1920: The file cannot be accessed by the system)。

引擎启动时要 remove 这些旧 socket,删不掉就整体启动失败。

尝试结果
[System.IO.File]::Delete / Remove-Item -Forceerror 1920
fsutil reparsepoint / robocopy失败
WSL rm -rf静默失败(文件仍在)
重命名父目录可行(官方 workaround)
若 %APPDATA%\Docker\settings-store.json 的 EnableDockerAI: true,第二次启动还会重建 dockerInference 并再次杀启动——先关掉。

Docker Desktop 的 Windows 侧引擎用 AF_UNIX socket 文件与 WSL 侧通信,正常退出时引擎负责清理;非正常退出(断电/强杀)时清理逻辑没跑,socket 文件残留。

Windows 对带 ReparsePoint 属性的文件有特殊保护(删除返回 error 1920),这是文件系统层的行为而不是 Docker 的 bug,所以普通删除 API、Remove-Item、WSL rm 全被拒。

确定性推论:删不掉不是权限不够,是「重解析点」属性问题;官方 workaround「重命名父目录」绕开的是删除限制而不是文件本身;先确认 settings-store.json 里 EnableDockerAI 为 false,否则第二次启动会重建 dockerInference 再次杀启动。

一步步来

1. 先看日志确认是这个坑 — 必做

%LOCALAPPDATA%\Docker\log\host\com.docker.backend.exe.log 搜 The file cannot be accessed by the system / GET /error。命中 → 不用再试各种删除方式,直接走重命名。

2. 停 Docker 并重命名目录 — 必做

所有 Docker 进程退出后,把两个目录改名(改名可行,删除永远失败)。改名后启动时 Docker 会自动重建干净的 run / docker-secrets-engine。

3. 关 EnableDockerAI — 必做

%APPDATA%\Docker\settings-store.json:"EnableDockerAI": false。不关的话启动时 Inference manager 会再杀一次启动。

4. 启动并验证 — 必做

Start-Process 'C:\Program Files\Docker\Docker\Docker Desktop.exe'
docker version --format '{{.Server.Version}}'
docker ps

5. 清理 — 必做

确认引擎正常后,旧目录可删:wsl -d Ubuntu bash -lc "rm -rf /mnt/c/Users/<user>/AppData/Local/Docker/run.old-* /mnt/c/Users/<user>/AppData/Local/docker-secrets-engine.old-*"(改名后顽固 reparse 文件也能被清掉)。

怎么确认修好了

docker version 返回 server 版本、docker ps 正常列出容器;重启后再没出现 The file cannot be accessed by the system。

其它环境的表现

环境说明
docker desktop start CLI实测挂起并留下新孤儿 socket,别用它;直接 Start-Process Docker Desktop.exe
连续失败修好一个 socket 后下一个又报是常态(sailor → secrets-engine → dockerInference),一次把两个目录都改名
EnableDockerAI=true启动时重建 dockerInference 再杀启动,先置 false
未实测非 Windows 平台(Docker Engine on Linux)无此问题,该坑仅限 Docker Desktop

症状

Docker Desktop 引擎启动失败,日志报 listening on unix://...sailor-ingest.sock: remove ...: The file cannot be accessed by the system;GUI 弹 unexpected error;修好一个 socket 后下一个又报。

原因

非正常退出留下的孤儿 AF_UNIX socket 带 ReparsePoint 属性,Windows 拒绝删除(error 1920);引擎启动时无法 remove 旧 socket → 整体失败。

解法

  1. 日志确认 The file cannot be accessed by the system;
  2. 停所有 Docker 进程;
  3. 重命名(不要删除) %LOCALAPPDATA%\Docker\run 与 %LOCALAPPDATA%\docker-secrets-engine 两个父目录;
  4. settings-store.json 置 EnableDockerAI=false;
  5. 直接启动 Docker Desktop.exe,轮询 docker version 就绪;
  6. 确认正常后清理旧目录。
验证证据
  • 本机实测(2026-08-30,Windows 11 + Docker Desktop 4.88.1):日志实锤 sailor-ingest.sock ... The file cannot be accessed by the system;删除方式全灭(error 1920 / WSL 静默失败);改名父目录 + EnableDockerAI=false + 重启后 server=29.7.2,kind 集群全部恢复,WSL 侧 docker 可连;当日第二次复发(docker desktop start 挂起)同样流程修复成功。证据:实测复现日志(2026-08-30)。
  • 未实测:非 Windows 平台行为未实测(该问题官方 issue 仅报告于 Docker Desktop)。

相关 canonical

按「前置 → 同根 / 同域 / 相关」读:

  • 相关(报错相近,根因不同):
  • Docker daemon 连不上(包含:orphan socket 是「连不上 daemon」的 Desktop 场景根因)

适用工具 (1)

本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。

docker · 外部工具

成套方案 (组合包)

这个问题包含在下列成套安装方案中。

来源与证据

收录 验证 ✓ 实测验证适用 1 工具
方案含本地实测或来源可复核的解法;未实测项已在文中如实标注。

素材来源:https://github.com/docker/desktop-feedback/issues/531

← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡