【笔记】解决 WSL 迁移后 Docker 出现 “starting services: initializing Docker API Proxy: setting up docker ap” 问题

【好用但慎用】Windows 系统中将所有 WSL 发行版从 C 盘迁移到 非系统 盘的完整笔记(附 异常处理)-CSDN博客

【笔记】Windows 系统迁移 Ubuntu(Preview)应用到其他磁盘_windows 迁移 ubuntu-CSDN博客


 

 

🧯 WSL 迁移后 Docker Desktop 异常问题解决笔记

一、问题背景

在将 WSL 发行版(如 Ubuntu、Podman Machine、NVIDIA Workbench 等)从系统盘迁移到其他盘后,启动 Docker Desktop 时出现如下典型报错:

 

starting services: initializing Docker API Proxy:
  setting up docker api proxy listener:
  open \\.\pipe\docker_engine: Access is denied

 

或 CLI 报错:

error during connect: Head "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/_ping":
  The system cannot find the file specified.

 

 

二、此前已尝试的方案 (仍具参考价值)

在本流程推出前,已尝试以下“重装相关”方案,但均未能解决问题,且造成了镜像与数据丢失:

  1. 彻底卸载并清理 Docker Desktop

    • 卸载应用 → 删除 Program Files\Docker%LocalAppData%\Docker%AppData%\Docker%USERPROFILE%\.docker 等目录

      Remove-Item "D:\Program\Docker" -Recurse -Force
      Remove-Item "$env:USERPROFILE\AppData\Local\Docker" -Recurse -Force
      Remove-Item "$env:USERPROFILE\AppData\Roaming\Docker" -Recurse -Force
      Remove-Item "$env:USERPROFILE\.docker" -Recurse -Force
      

    • 用火绒等软件清理注册表中 Docker 相关项

  2. 重新安装最新版本 Docker Desktop

    • 下载安装包 → 安装到默认路径

    • 重启后仍然报 “pipe…Access is denied”

⚠️ 代价:已下载的镜像与容器数据全部丢失,但问题依旧,说明单纯的重装无法解决 WSL 底层路径与权限问题。

 


 

 

 

三、解决步骤

(一)关闭相关进程

须以管理员身份运行 PowerShell

# 关闭所有 WSL 实例
wsl --shutdown

# 终止与 WSL、Docker 相关的进程
taskkill /f /im wsl.exe /im powershell.exe /im cmd.exe /im "Docker Desktop.exe"
Stop-Service com.docker.service -Force   # 如果存在 Docker Windows 服务

# 停止 Podman Machine(如使用)
podman machine stop

… 

 


(二)升级 WSL 环境

wsl --update
  • 若遇网络或更新包下载错误(403),可多次重试或检查 Windows Update 服务。

  • 当提示“已安装最新版本的适用于 Linux 的 Windows 子系统”即完成。

 


(三)配置 WSL 交换文件路径

  1. 打开 设置 → 适用于 Linux 的 Windows 子系统

  2. 进入 内存和处理器 选项卡

  3. 设置:

    • 交换大小:如 16384 MB

    • 交换文件位置:迁移后绝对路径,例如

      I:\WSL\Ubuntu\ext4.vhdx
      
  4. 保存并执行:

    wsl --shutdown
    

    使配置生效。

 

 


(四)重启 Docker Desktop 及验证

  1. 启动或“以管理员身份运行” Docker Desktop

  2. 如仍异常,可在 Docker Desktop 界面:
    Settings → Troubleshoot → Reset to factory defaults

  3. 验证恢复:

    docker info
    docker run hello-world
    

 


四、关键说明

  • 完整流程优先:卸载/重装 Docker Desktop 必须与 WSL 层面的进程关闭、升级、swap 路径配置相结合,否则无法根治。

  • 管理员权限:所有命令务必在“以管理员身份”启动的 PowerShell 中执行。

  • 路径与权限校验:确保 swap 文件及 WSL vhdx 均位于迁移后盘符,路径正确且有读写权限。


通过上述流程,应该可彻底解决由于 WSL 发行版迁移造成的 Docker Desktop 守护进程启动失败、命名管道访问被拒等问题,恢复容器正常使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值