Windows 10.0.18363系统下Docker无法切换至Windows容器问题求助
上下文
- Windows版本:10.0.18363 Build 18263
- Docker信息:
Cloud integration: 1.0.17 Version: 20.10.8 API version: 1.41 Go version: go1.16.6 Git commit: 3967b7d Built: Fri Jul 30 19:58:50 2021 OS/Arch: windows/amd64 Context: default Experimental: true
- 设备:Surface Laptop 3
- Docker设置:

问题描述
近四天本机无法切换至Windows容器,也无法运行Windows容器。每次尝试切换到Windows容器时都会收到如下报错:
System.ServiceProcess.TimeoutException: Time out has expired and the operation has not been completed. at System.ServiceProcess.ServiceController.WaitForStatus(ServiceControllerStatus desiredStatus, TimeSpan timeout) at Docker.Backend.Processes.WindowsDockerDaemon.TryToStartService(Settings settings, String args, Dictionary`2 env) in C:\workspaces\master-merge\src\github.com\docker\pinata\win\src\Docker.Backend\Processes\WindowsDockerDaemon.cs:line 208 at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__0(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- 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 System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext() --- 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 System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext() --- 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 System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
之后会弹出「恢复出厂默认设置」选项,点击后Docker会在重启过程中长时间无响应,最终崩溃。已尝试操作:重启设备、重启Docker、卸载重装Docker、删除daemon.json文件、Windows系统版本回退后再升级,均无法解决问题。
解决方案
可按以下优先级尝试排查修复:
- 确认Windows容器相关系统功能正常启用:打开管理员权限的Windows终端,执行命令
dism /online /enable-feature /all /featurename:Containers /norestart,执行完成后重启设备,再执行dism /online /enable-feature /all /featurename:Microsoft-Hyper-V /norestart,再次重启后重试。 - 手动重置Docker缓存:完全退出Docker Desktop,打开管理员权限的服务管理器(运行
services.msc),找到Docker Desktop Service右键停止,删除C:\ProgramData\Docker和C:\Users\你的用户名\.docker两个目录下的所有内容(可提前备份需要的镜像、容器数据),重启设备后再打开Docker重试。 - 调整Docker版本适配:你当前使用的Docker 20.10.8和Windows 10 18363版本存在已知的Windows容器兼容问题,卸载当前版本后安装20.10.7或4.2.0版本的Docker Desktop,关闭实验性功能选项后重试。
- 排查第三方软件拦截:如果设备上安装了杀毒软件、安全防护类软件,临时退出后重试,部分安全软件会拦截Docker服务的启动操作,导致超时错误。
内容的提问来源于stack exchange,提问作者windowsqs
相关产品推荐
相关产品推荐

