Windows 11 22H2环境下Docker构建容器遇hcsshim::ImportLayer错误求助
在Windows 11专业版22H2(版本号22621.521)环境下构建容器解决方案时,编译阶段显示成功但最终报错,容器无法完成构建运行。相同Dockerfile在Windows 21H2环境下可正常执行。
报错信息:
48 条警告
0 条错误
耗时 00:02:13.76
ERROR: Service ‘solution’ failed to build: re-exec error: exit status 1: output: time="2022-09-26T21:14:06+01:00" level=error msg="hcsshim::ImportLayer - failed failed in Win32: The system cannot find the path specified. (0x3)" error="hcsshim::ImportLayer - failed failed in Win32: The system cannot find the path specified. (0x3)" importFolderPath="C:\ProgramData\Docker\tmp\hcs861034347" path="?\C:\ProgramData\Docker\windowsfilter\b34083dbe2042a59de9e2a70b2ca36468456a87a5063df36708e55f7b574b5c2"
unexpected EOF
已尝试操作:
- 关闭杀毒软件实时扫描及防火墙
- 在配置文件中添加“storage-opts”属性
- 执行
docker system prune命令
当前Docker版本:19.03.5,build 633a0ea
1. 升级Docker至兼容Windows 11 22H2的版本
Docker 19.03.5发布于2019年,未针对Windows 11 22H2做适配,存在兼容性问题。建议升级至Docker Desktop 4.x系列或至少20.10.x版本,这些版本对Windows 11的容器支持更完善。
2. 重置并修复Windows容器功能
- 关闭Docker Desktop,右键任务栏图标选择
Quit Docker Desktop - 打开
控制面板->程序和功能->启用或关闭Windows功能 - 取消勾选
容器和Windows Subsystem for Linux(若使用WSL后端),点击确定后重启系统 - 重启后重新勾选上述功能,再次重启系统
- 启动Docker Desktop,切换至Windows容器模式(若之前是Linux模式)
3. 手动清理Docker存储目录
- 停止Docker服务:打开命令提示符(管理员),执行
net stop docker和net stop com.docker.service - 删除临时目录:删除
C:\ProgramData\Docker\tmp下的所有文件 - 清理损坏的镜像层:删除
C:\ProgramData\Docker\windowsfilter中报错路径对应的文件夹(即b34083dbe2042a59de9e2a70b2ca36468456a87a5063df36708e55f7b574b5c2) - 启动Docker服务:执行
net start docker和net start com.docker.service
4. 调整Docker存储配置
移除之前添加的storage-opts属性,Windows容器默认使用windowsfilter存储驱动,额外配置可能导致冲突。若需自定义存储,需确保参数符合Windows容器的要求。
5. 以管理员身份运行Docker Desktop
右键Docker Desktop图标,选择以管理员身份运行,避免因权限不足导致的文件访问问题。
内容的提问来源于stack exchange,提问作者Imran Hamid

