You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同时恢复两个MariaDB备份后Docker Desktop无法启动的排查求助

Docker Desktop启动失败排查方案(迁移数据后)

问题背景

全新安装Docker Desktop并将数据迁移至副盘,此前正常运行小型应用,尝试同时恢复两个6GB的.sql备份文件(对应数据库约60GB,磁盘空间充足),数小时后容器以代码1退出,随后Docker Desktop崩溃,启动时弹出错误对话框,报错信息如下:

Docker.Core.HttpBadResponseException:
{"message":"2 errors occurred:\n\t* starting keep alive in the data distro: waiting for wsl-keepalive to be ready: running wsl-keepalive in \"docker-desktop-data\": exit status 0xffffffff\n\t* checking if isocache exists: CreateFile \\\\wsl$\\docker-desktop-data\\isocache\\: The network name cannot be found.\n\n"}

   at Docker.Core.GoBackend.GoBackendClient.<PostNoBodyWithError>d__19.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.Core\GoBackend\GoBackendClient.cs:line 226
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__11.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\LinuxWSL2Engine.cs:line 54
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__6.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 91
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__6.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 118
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.EngineStateMachine.<StartAsync>d__15.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\EngineStateMachine.cs:line 72
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.Engines.<StartAsync>d__23.MoveNext() in C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.Engines\Engines.cs:line 109

排查方案

1. 检查并修复WSL2发行版状态

  • 打开管理员PowerShell,执行命令查看WSL发行版状态:
    wsl --list --verbose
    
    确认docker-desktop和docker-desktop-data的状态,若为Stopped,依次执行启动命令:
    wsl --start docker-desktop-data
    wsl --start docker-desktop
    
  • 若启动失败,先关闭所有WSL实例:
    wsl --shutdown
    
    等待10秒后重新尝试启动上述两个发行版。

2. 验证迁移后的VHDX文件完整性

  • 找到你迁移后docker-desktop-data对应的VHDX文件(比如D:\Docker\data\ext4.vhdx),执行挂载命令验证文件是否可用:
    wsl --mount D:\Docker\data\ext4.vhdx --type ext4
    
  • 若挂载失败,尝试修复文件系统(确保VHDX未被占用):
    wsl -d docker-desktop-data -u root fsck /dev/sda
    

3. 手动创建缺失的isocache目录

  • 通过WSL命令进入docker-desktop-data发行版并创建目录:
    wsl -d docker-desktop-data -u root
    mkdir -p /isocache
    chmod 755 /isocache
    exit
    
    完成后重新启动Docker Desktop。

4. 重置WSL网络环境

  • 执行以下命令重置网络相关组件:
    netsh winsock reset
    netsh int ip reset all
    netsh winhttp reset proxy
    ipconfig /flushdns
    wsl --shutdown
    
    重启电脑后再次启动Docker Desktop。

5. 检查磁盘权限与空间

  • 确认VHDX文件所在目录的权限,确保当前用户拥有完全控制权限;
  • 再次确认副盘剩余空间充足,避免VHDX扩展时出现异常。

6. 重新注册docker-desktop-data发行版(备份后尝试)

  • 先复制VHDX文件到安全路径做备份;
  • 执行命令注销并重新注册发行版:
    wsl --unregister docker-desktop-data
    wsl --import docker-desktop-data D:\Docker\data D:\Docker\data\ext4.vhdx --version 2
    
    注意替换命令中的路径为你实际的VHDX存储路径,完成后启动Docker Desktop。

内容的提问来源于stack exchange,提问作者Dantas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:10:29