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

news2025/1/13 17:01:00

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 镜像或从另一个来源获取缺少的层。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2498. 青蛙过河 II;2568. 最小无法得到的或值;1954. 收集足够苹果的最小花园周长

2498. 青蛙过河 II 核心思想&#xff1a;这题有点开脑洞&#xff0c;就是如果想让代价最小只能是隔一个石头跳&#xff0c;因为其他方法的路径都会形成比这种方法大的结果&#xff0c;然后我们只需要统计出间隔石头的最大值即可。 2568. 最小无法得到的或值 核心思想&#xf…

【第二阶段】kotlin语言的匿名函数类型推断

1.常规匿名函数写法&#xff1a; 如果使用了":",必须给定参数类型和 返回值类型如下&#xff1a; val meThod:()->Int{}2.匿名函数“”&#xff0c;返回类型推断 使用类型推断“”&#xff0c;根据返回值的类型推断 fun main() {/** 常规匿名函数写法&#xff1a…

2023年最新最全软件测试面试题大全

一、面试基础题 简述测试流程: 1、阅读相关技术文档&#xff08;如产品PRD、UI设计、产品流程图等&#xff09;。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例&#xff08;等价类划分法、边界值分析法等&#xff09;。 5、用例评审(…

哈希unordered系列介绍(上)

一.Unordered_map,Unordered_set介绍 在之前我们已经介绍过set,map,multiset等等关联式容器&#xff0c;它们的底层是红黑树进行模拟实现的&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点…

【Linux】IP协议——网络层

目录 IP协议 基本概念 IP协议格式 分片与组装 网段划分 特殊的IP地址 IP地址的数量限制 私网IP地址和公网IP地址 路由 路由表生成算法 IP协议 IP协议全称为“网际互连协议&#xff08;Internet Protocol&#xff09;”&#xff0c;IP协议是TCP/IP体系中的网络层协议…

【LangChain】Memory

概要 大多数LLM应用都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少&#xff0c;对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型&#xff0c;这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。…

【D3S】REST接口文档自动生成 - 集成smart-doc并同步配置到Torna

目录 一、引言二、maven插件三、smart-doc.json配置四、smart-doc-maven-plugin相关命令五、推送文档到Torna六、通过Maven Profile简化构建 一、引言 D3S&#xff08;DDD with SpringBoot&#xff09;为本作者使用DDD过程中开发的框架&#xff0c;目前已可公开查看源码&#…

Object.assign详解

一、Object.assign是什么&#xff1f; Object.assign( )方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 二、用法 Object.assign(target, ...sources) 参数&#xff1a;target ——>目标对象 source ——>源对象 返回值&#xff1a;…

使用生成式 AI 模仿人类行为

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 这项研究被 2023 年学习表征国际会议 &#xff08;ICLR&#xff09; 接受&#xff0c;该会议致力于推进通常称为深度学习的人工智能分支。 图 1&#xff1a;我们的方法概述。 扩散模型已成为一类强大的生…

【JVM】JVM垃圾收集器

文章目录 什么是JVM垃圾收集器四种垃圾收集器&#xff08;按类型分&#xff09;1.串行垃圾收集器(效率低&#xff09;2.并行垃圾收集器(JDK8默认使用此垃圾回收器&#xff09;3.CMS&#xff08;并发&#xff09;垃圾收集器(只针对老年代垃圾回收的&#xff09; 什么是JVM垃圾收…

SDR硬件方案

以射频硬件为线索&#xff0c;梳理常见SDR&#xff08;软件无线电&#xff09;方案。SDR硬件位于天线和数字信号处理之间&#xff0c;负责把无线电信号数字化&#xff0c;交由主机或者嵌入式系统&#xff08;FPGA、DSP&#xff0c;MCU&#xff09;处理。SDR硬件一般包含射频和数…

Python Opencv实践 - 图像缩放

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg_cat cv.imread("../SampleImages/cat.jpg", cv.IMREAD_COLOR) plt.imshow(img_cat[:,:,::-1])#图像绝对尺寸缩放 #cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) #指定Size大…

18.3.0:Dynamic Web TWAIN Crack Web 文档扫描 SDK

Dynamic Web TWAIN用于快速部署 Web 应用程序的文档扫描 SDK&#xff0c;文档扫描SDK&#xff0c;&#xff0c;超过 5300 家公司信任 Dynamic Web TWAIN &#xff0c;因其稳健性和安全性而受到超过 5300 家公司的信赖&#xff0c;Dynamic Web TWAIN 是一款基于浏览器的文档扫描…

微信开发之一键获取标签好友的技术实现

简要描述&#xff1a; 获取标签列表 请求URL&#xff1a; http://域名地址/getContactLabelList 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选…

qtrvsim 使用

qtrvsim 使用 介绍 Qtrvsim 是一个基于 WebAssembly&#xff08;基于非 js 语言并使得其可以在浏览器中运行&#xff09;的图形化 RISC-V 微处理器模拟器&#xff0c;给初学者提供了一个实现 RISC-V 架构的渠道。 Developed by the Computer Architectures Education project…

5.2 互联网通信安全

数据参考&#xff1a;CISP官方 目录 一、什么是互联网通信安全二、为什么要关注互联网通信安全三、电子邮件应用安全四、即时通讯应用安全 一、什么是互联网通信安全 1、互联网通信应用的概念 通信的进化史 互联网通信技术&#xff08;OSI七层模型&#xff09; 互联网应…

【第二阶段】kotlin的lambda学习

匿名函数lambdm表达式 1.两数相加 fun main() {//匿名函数lambda表达式//两数相加 等价&#xff1a;val addResult:(Int,Int)->String{a,b->"两数相加结果&#xff1a;${ab}"}val addResult{a:Int,b:Int->"两数相加结果${ab}"}println(addResul…

解码Transformer:自注意力机制与编解码器机制详述与代码实现

目录 一、 Transformer的出现背景1.1 技术挑战与先前解决方案的局限性RNN和LSTM卷积神经网络&#xff08;CNN&#xff09;在序列处理中的尝试 1.2 自注意力机制的兴起1.3 Transformer的革命性影响 二、自注意力机制2.1 概念和工作原理元素的权重计算加权求和自注意力与传统注意…

没有上司的舞会(树形dp)

思路&#xff1a; &#xff08;1&#xff09;每个人有一个开心值&#xff0c;并且人物关系呈树形分布。 &#xff08;2&#xff09;我们所求为根部人物及其下属的总开心值&#xff0c;显然存在某种递归关系&#xff1b;注意到要求是不能直系父子同时出现&#xff0c;于是考虑…

数据分析 | 为什么Bagging算法的效果优于单个评估器

1. 回归问题如何降低方差 以随机森林为例&#xff0c;假设随机森林中含有n个弱评估器&#xff0c;由于子样本集的相似性以及使用的是同种模型&#xff0c;因此各模型有近似相等的方差和偏差&#xff0c;因此假设任意弱评估器上输出结果为,方差均为&#xff0c;则随机森林的输出…