You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 19.10下Docker拉取镜像报unknown blob错误求助

解决DockerHub拉取镜像时出现"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

火山引擎 最新活动