Ubuntu 19.10下Docker拉取镜像报unknown blob错误求助
问题场景
我在Linux Ubuntu 19.10系统上使用Docker 19.03.6(build 369ce74a3c),创建了如下简单的Dockerfile:
FROM busybox:latest CMD echo Hello World
执行构建命令并推送至DockerHub都成功完成:
# 构建镜像 docker build -t rshtishi/hello-world-dockerfile -f HelloWorld.df . # 推送至DockerHub docker push rshtishi/hello-world-dockerfile
但本地删除该镜像后,执行拉取命令时出现错误:
Using default tag: latest
latest: Pulling from rshtishi/hello-world-dockerfile
61c5ed1cbdf8: Already exists
error pulling image configuration: unknown blob
解决方案
这种unknown blob错误大多是镜像推送过程中数据不完整导致的,DockerHub上的镜像层出现了缺失。可以按以下步骤排查修复:
重新强制推送镜像:先在本地重新构建镜像(确保构建过程无报错),然后强制推送覆盖DockerHub上的镜像:
docker build -t rshtishi/hello-world-dockerfile -f HelloWorld.df . docker push --force rshtishi/hello-world-dockerfile:latest网络波动是推送失败的常见原因,强制推送能确保所有镜像层都被正确上传。
检查DockerHub镜像状态:登录DockerHub后台,找到你的
rshtishi/hello-world-dockerfile镜像,查看标签的详细信息,确认所有镜像层都正常显示。如果有层缺失,说明之前的推送确实未完成。清理本地Docker缓存:本地缓存的旧数据可能干扰构建和推送流程,先清理缓存后再重新操作:
docker system prune -a清理完成后重新构建、推送,再尝试拉取镜像。
考虑升级Docker版本:你的Docker版本19.03.6相对老旧,虽然busybox镜像结构简单,但旧版本Docker与DockerHub的API可能存在兼容性问题。如果上述方法都无效,升级到较新的稳定版Docker后再尝试操作。
内容的提问来源于stack exchange,提问作者Rando Shtishi




