启用Containerd Beta后,含WORKDIR的Docker镜像本地无法找到
Docker Desktop for Mac(启用Containerd Beta)含WORKDIR的镜像构建后无法运行,提示找不到本地镜像
环境信息
- macOS 12.4
- Docker Desktop for Mac 20.10.22
- 已启用Containerd Beta(
Use containerd for pulling and storing images)选项
问题现象
编写包含WORKDIR指令的极简Dockerfile,执行构建命令后:
- 构建流程成功完成
docker image ls可正常列出minimal:test镜像,也能通过docker rmi正常删除- 执行
docker run命令时,系统提示找不到本地镜像,错误尝试拉取远程仓库的对应镜像
注释掉Dockerfile中的WORKDIR指令后,镜像可正常运行。经排查,问题根源为启用了Containerd Beta选项。
复现命令
构建命令
export DOCKER_BUILDKIT=1 docker build --platform linux/amd64 -t minimal:test -f Dockerfile .
运行命令
export DOCKER_BUILDKIT=1 docker run --rm --platform linux/amd64 -it minimal:test
报错信息
Unable to find image 'minimal:test' locally
docker: Error response from daemon: failed to resolve reference "docker.io/library/minimal:test": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed.
See 'docker run --help'.
解决方案
临时修复:禁用Containerd Beta选项
- 打开Docker Desktop偏好设置
- 切换到
Features in development标签页 - 取消勾选
Use containerd for pulling and storing images - 重启Docker Desktop后,重新构建并运行镜像即可正常工作
兼容Containerd的替代方案
如果需要保留Containerd Beta功能,可尝试以下两种方式:
- 升级Docker Desktop版本:后续版本(如20.10.23及以上)修复了部分Containerd与BuildKit、WORKDIR指令的兼容性问题,升级后可解决该问题。
- 显式指定本地命名空间:构建镜像时将标签改为
localhost/minimal:test,明确指定镜像存储在本地命名空间,避免Docker尝试从远程仓库拉取:# 构建命令 export DOCKER_BUILDKIT=1 docker build --platform linux/amd64 -t localhost/minimal:test -f Dockerfile . # 运行命令 export DOCKER_BUILDKIT=1 docker run --rm --platform linux/amd64 -it localhost/minimal:test
内容的提问来源于stack exchange,提问作者shadowtalker
相关产品推荐
相关产品推荐

