Win10更新Docker Desktop 3.4.0后无法获取并运行中间层镜像怎么办
版本改动核心逻辑
Docker Desktop 3.4.0正式将BuildKit设置为默认镜像构建后端,替代了此前的传统Docker构建器,两者的构建输出与中间层管理逻辑存在明显差异:
- 你在
--progress plain输出中看到的sha256:xxx是BuildKit的内部缓存对象ID,并非可直接调用的本地镜像层哈希 - 传统构建器会默认将所有中间层作为本地镜像保存并输出短哈希,而BuildKit默认仅保留最终构建产物,不会自动把中间层暴露到本地镜像列表中,因此不会输出传统的中间层短哈希
获取中间层镜像哈希的方案
方案1:临时切换回传统构建器
执行构建前添加环境变量禁用BuildKit,即可完全恢复旧版构建逻辑,直接输出可用的中间层短哈希:# Windows PowerShell 环境执行 $env:DOCKER_BUILDKIT=0 docker build .输出的中间层短哈希可直接通过
docker run <短哈希>启动调试。方案2:保留BuildKit的前提下导出指定中间层
如果需要继续使用BuildKit的构建性能,可以针对需要调试的构建阶段单独打标签导出为本地镜像:
假设你的Dockerfile中对应构建阶段命名为build,执行以下命令:docker build --target build --tag build-debug:latest .构建完成后即可通过
docker run -it build-debug:latest进入对应中间层调试。方案3:直接查询所有构建生成的悬空镜像
BuildKit生成的未被关联的中间层会作为悬空镜像保存在本地,执行以下命令即可列出:docker images -f "dangling=true"列表中与你的构建时间匹配的镜像ID就是可用的中间层哈希,可直接调用。
内容的提问来源于stack exchange,提问作者Guerrilla
相关产品推荐
相关产品推荐

