【Docker系列】push镜像报错问题解决方案

1 问题描述

docker push 报这个错,unknown blob

详细报错内容:

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
The push refers to repository [192.******/*******/*************]
3b3341e9d039: Pushing [==================================================>]  12.97MB
abbeacff5fa5: Pushing [==================================================>]   7.68kB
685c55d58372: Pushing [==================================================>]  4.096kB
6d451941e7b1: Pushing   2.56kB
0348644449af: Pushing [===========================>                       ]   15.8MB/28.67MB
4b56765b6b5e: Pushing [==================================================>]  7.168kB
65bc30a63225: Pushing [==================================================>]   5.12kB
6be1b85707bc: Pushing [==================================================>]   2.56kB
1eb3501d2fb4: Waiting 
81d1bb17d85e: Waiting 
5079ade1f5c9: Waiting 
9386262d7a74: Waiting 
unknown blob

2 解决思路

2.1 定位问题

当 Docker push 时出现 "unknown blob" 错误时,这通常表示 Docker 镜像中缺少某些层或 blob。

有几种可能的解决方案:

  1. 修改daemon.json文件
  2. 检查 Docker 镜像是否存在
  3. 检查 Dockerfile 是否正确
  4. 清除 Docker 缓存
  5. 重新构建 Docker 镜像
  6. 检查 Docker 镜像层

2.2 方案一

如果是使用的域名推送,可以修改daemon.json文件,改为内网push,增加insecure-registries 

{
  "insecure-registries": ["my.insecure.registry:5000"]
}

如果你需要连接到多个不安全的 Docker Registry,请将它们添加到 `insecure-registries` 列表中。

拓展 

insecure-registries 是 Docker daemon 配置选项之一,允许 Docker daemon 在不使用 TLS 或其他安全协议的情况下连接到指定的 Docker Registry。

默认情况下,Docker daemon 仅允许使用 TLS 或其他安全协议连接到 Docker Registry。

注意,使用 insecure-registries 可能会存在安全风险。建议仅在测试或开发环境中使用 insecure-registries 选项,不要将其用于生产环境。 

2.3 方案二

1. 检查 Docker 镜像是否存在

使用以下命令查看 Docker 镜像列表:

docker images

```

如果你的镜像不在列表中,请尝试重新构建镜像。

2.检查 Dockerfile 是否正确

确保 Dockerfile 中的每个指令都能成功运行,并且没有拼写错误或语法错误。

3.清除 Docker 缓存

可以尝试清除 Docker 缓存并重新构建 Docker 镜像。可以使用以下命令清除 Docker 缓存:

这将清除所有未使用的 Docker 镜像、容器和卷。

docker system prune --all --force --volume

4.重新构建 Docker 镜像

如果清除 Docker 缓存后问题仍然存在,可以尝试重新构建 Docker 镜像:

下面命令会将重新构建 Docker 镜像。

docker build -t <image_name> .

4.检查 Docker 镜像层

可以使用以下命令列出 Docker 镜像的所有层:

docker inspect <image_name>

如果尝试了上述解决方案后仍然无法解决问题,可能需要进一步检查 Docker 镜像及其层的状态。

可以使用以下命令列出 Docker 镜像的所有层和它们所对应的 blob 的摘要:

docker inspect <image_name> | grep -i sha256

其中 <image_name> 是要检查的 Docker 镜像的名称或 ID。

输出将包含每个层的 SHA256 摘要,例如:

"RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:0a8f4a1d34f9d295a0bcf9a7f8c11a4d9a4e5f5b2f2a6b8e6e6b8f8a496f16d5",
                "sha256:0b2c3e1e6f0e3e0d8b7f1c8db67de5a2a3fbc0e3c0d2bb8f1a7b1d2d9a7c4e01",
                "sha256:2b8c7e2fdee9f0d5e6b9a6f5b0c1dd3a309c3826c7c4a31b66c9956179c7f9e5",
                "sha256:9a32d4f6c0c8d1b3b0bca1d6b9e5f6c8e4f75d9b7d4bdc1e2f7f3d0c86c63cbe",
                "sha256:faa9aef3a5244a9a1a406f3df7d1b4a1b7979c0f8d86c533d5ed1e3c8b08c5e4"
            ]
        }

如果某个层或 blob 缺失,您将看不到其对应的 SHA256 摘要。如果确实缺少某些层或 blob,则可以尝试重新构建 Docker 镜像或从另一个来源获取缺少的层或 blob。

如果您使用的是 Docker Registry,可以尝试使用 Registry 的 garbage-collect 命令清除 Registry 中的孤立层和 blob。例如:

docker exec <registry_container_id> bin/registry garbage-collect /etc/docker/registry/config.yml

其中 <registry_container_id> 是 Registry 容器的 ID。garbage-collect 命令将清除 Registry 中的孤立层和 blob,并重新构建索引。

如果有256

如果使用的是 Docker 19.03 或更高版本,则 Docker 会默认启用基于 SHA256 的镜像摘要算法。在这种情况下,您可以使用以下命令列出 Docker 镜像的所有层和它们所对应的 SHA256 摘要:

docker inspect <image_name> --format='{{json .RootFS.Layers}}' | jq -r '.[]'

其中 <image_name> 是您要检查的 Docker 镜像的名称或 ID。

这将输出 Docker 镜像的所有层的 SHA256 摘要,例如:

sha256:0a8f4a1d34f9d295a0bcf9a7f8c11a4d9a4e5f5b2f2a6b8e6e6b8f8a496f16d5
sha256:0b2c3e1e6f0e3e0d8b7f1c8db67de5a2a3fbc0e3c0d2bb8f1a7b1d2d9a7c4e01
sha256:2b8c7e2fdee9f0d5e6b9a6f5b0c1dd3a309c3826c7c4a31b66c9956179c7f9e5
sha256:9a32d4f6c0c8d1b3b0bca1d6b9e5f6c8e4f75d9b7d4bdc1e2f7f3d0c86c63cbe
sha256:faa9aef3a5244a9a1a406f3df7d1b4a1b7979c0f8d86c533d5ed1e3c8b08c5e4

如果某个层缺失,将看不到其对应的 SHA256 摘要。如果确实缺少某些层,则可以尝试重新构建 Docker 镜像或从另一个来源获取缺少的层。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/64227.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全进阶学习第十三课——SQL注入Bypass姿势

文章目录 一、等号被过滤二、substr、mid等被过滤三、逗号被过滤四、and/or被过滤五、空格被过滤五、其他绕过方式 一、等号被过滤 1、like&#xff0c;rlike语句&#xff0c;其中rlike是正则2、大于号>&#xff0c;小于号<3、符号<>&#xff1a;<>为不等于…

【win10专业版远程控制】 自带远程桌面公司内网电脑

使用win10专业版自带远程桌面公司内网电脑 文章目录 使用win10专业版自带远程桌面公司内网电脑 在现代社会中&#xff0c;各类电子硬件已经遍布我们身边&#xff0c;除了应用在个人娱乐场景的消费类电子产品外&#xff0c;各项工作也离不开电脑的帮助&#xff0c;特别是涉及到数…

【C++】多态(多态的构成条件,虚函数重写,override,final,覆盖隐藏对比)

文章目录 前言一、多态的定义及实现1.多态的构成条件&#xff1a; 二、虚函数1.虚函数的重写2.虚函数重写的例外&#xff08;协变&#xff09;3.析构函数的虚函数&#xff08;基类与派生类析构函数名字不同&#xff09;1.不加virtual的一般情况&#xff1a;2.不加virtual会出现…

浅谈新电改背景下电网企业综合能源服务商业模式研究及发展方向

安科瑞 华楠 摘要: 新电改方案实施后&#xff0c;由于输配电价的改革和售电侧的放开&#xff0c;电网企业的盈利模式也随之发生了变化。这就要求电网企业转变服务理念与经营方式&#xff0c;来寻求竞争优势。基于“魏朱六要素商业模式”模型&#xff0c;对电网企业综合能源服务…

heima头条项目学习--Day1: 环境搭建、SpringCloud微服务(注册发现、网关)

Nacos注册发现、网关 a. 项目介绍b. app登录1) 需求分析2) 表结构分析3) 手动加密&#xff08;md5随机字符串&#xff09;4) 用户端微服务搭建5) 功能实现6) app网关7) 网关校验jwt8) 前端集成, 配置nginx a. 项目介绍 业务说明 技术栈说明 [外链图片转存失败,源站可能有防盗…

目标检测与跟踪 (3)- TensorRTYOLO V8性能优化与部署测试

系列文章目录 目标检测与跟踪 &#xff08;1&#xff09;- 机器人视觉与YOLO V8_Techblog of HaoWANG的博客-CSDN博客 目标检测与跟踪 &#xff08;2&#xff09;- YOLO V8配置与测试_Techblog of HaoWANG的博客-CSDN博客 目录 系列文章目录 前言 YOLO v8 TensorRT 一、…

新手教程:5步掌握系统流程图绘制方法!

流程图通常用于管理、分析、设计许多不同领域的流程&#xff0c;是一个很有用的工具&#xff0c;能够帮助大家更轻松、更有效地解决问题。系统流程图是流程图的常见变体之一。 系统流程图是展示数据流以及决策如何影响周围事件的图表类型。 与其他类型的流程图一样&#xff0c;…

Python(Web时代)——jinja2模板

简介 Jinja2是Flask框架默认支持的模板引擎&#xff0c;是python的web项目中被广泛应用的一种模板引擎&#xff0c;jinja2的作者与Flask是同一个人。 jinja2具有以下特点&#xff1a; 非常灵活&#xff0c;提供了控制结构、表达式与继承等 性能好 可读性强 渲染一个模板&a…

uni——tab切换

案例展示 案例代码 <view class"tablist"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem" :class"current item.id?active:" click"changeTab(item)">{{item.nam…

laravel语言包问题

1、更新vendor composer require "overtrue/laravel-lang:3.0" 2、修正配置文件 config/app.php 3、 php artisan config:clear 更新缓存 4、设定新的语言包 在这个resources\lang目录下加即可

LeetCode[210]课程表II

难度&#xff1a;Medium 题目&#xff1a; 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示在选修课程 ai 前 必须 先选修 bi 。 例如&#xff0c;想要学…

RunnerGo配置场景时接口模式该怎么选

在进行性能测试时&#xff0c;测试场景的正确配置非常关键。首先&#xff0c;需要根据业务场景和需求&#xff0c;设计出合理的测试场景&#xff0c;再利用相应的工具进行配置&#xff0c;实现自动化的性能测试。 在JMeter中&#xff0c;用户需要自己组织测试场景&#xff0c;…

DDS中间件设计

OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下&#xff0c;这里可以看到DDS和RTPS的关系。另外缺少一部分IDL&#xff08;统一描述语言&#xff09;&#xff0c;其应该是Pub、Sub的反序列化、序列化工具。 在RT…

PDF Expert 3.3 for mac

PDF Expert是一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 以下是PDF Expert的特点&#xff1a; PDF编辑&#xff1a;PDF Expert提供了丰富的PDF编辑功能&#xff0c;包括添加、删除、移动、旋转、缩放、裁…

用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

一、i18n的安装 这个地方要注意自己的vue版本和i1n8的匹配程度&#xff0c;如果是vue2点几&#xff0c;记得安装i18n的8版本&#xff0c;不然会自动安装的最新版本&#xff0c;后面会报错哦&#xff0c;查询了下资料&#xff0c;好像最新版本是适配的vue3。 npm install vue-…

量子力学的挑战和未来:未解决的问题和可能的发展方向

亲爱的读者&#xff0c; 欢迎回到我们的量子力学系列文章。在前面的几篇文章中&#xff0c;我们已经深入探讨了量子力学的起源、基本概念、实验验证以及应用领域&#xff0c;包括量子计算、量子通信和量子感应。今天&#xff0c;我们将探讨量子力学所面临的挑战以及未来可能的…

STM32 CubeMX USB_MSC(存储设备U盘)

STM32 CubeMX STM32 CubeMX USB_MSC(存储设备U盘&#xff09; STM32 CubeMX前言 《使用内部Flash》——U盘一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择FATFS功能 二、代码部分修改代码"usbd_storage_if.c"修改代码"user_diskio.c"main函数初始化插…

9.1网络通信基础

一.基础概念: 1)IP地址:描述网络上的一个设备所在的位置. 2)端口号(port):区分一个主机上不同的进程,和pid一样的作用,但两者不同. 3)协议:网络通信传输数据的含义,协议表示一种约定,这种约定可以是任意的.协议分层之后,上层不需要知道下层协议的细节,可以灵活地调整,替换某…

TypeScript 类型断言

TypeScript 类型断言 简单来说类型断言就是 使用as关键词 强行指定获取到的结果类型 应用场景 // 类型断言: 强行指定获取到的结果类型// 应用场景// 页面上有一个 id 为 link 的 a 标签// 我们知道它是 a 标签// 但是 TS 不知道 // document.getElementById 的返回值是 HTMLE…

图数据库使用及业务场景

一. 前言 来学习下图数据以及图数据库 二. 图数据库的简单原理 2.1 图数据 我认为图数据结构就是点线面的关系&#xff0c;图大致分为以下概念 &#xff1a; 节点 &#xff1a; 图中的基本元素&#xff0c;可以用来表示现实世界中的一个**实体 **边 &#xff1a; 节点之间…