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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给oracle逻辑导出clob大字段、大数据量表提提速

文章目录 前言一、大表数据附&#xff1a;查询大表 二、解题思路1.导出排除大表的数据2.rowid切片导出大表数据Linux代码如下&#xff08;示例&#xff09;&#xff1a;Windows代码如下&#xff08;示例&#xff09;&#xff1a;手工执行代码如下&#xff08;示例&#xff09;&…

React【React是什么?、创建项目 、React组件化、 JSX语法、条件渲染、列表渲染、事件处理】(一)

文章目录 React是什么&#xff1f; 为什么要学习React React开发前准备 创建React项目 React项目结构简介 React组件化 初识JSX 渲染JSX描述的页面 JSX语法 JSX的Class与Style属性 JSX生成的React元素 条件渲染&#xff08;一&#xff09; 条件渲染 &#xff0…

深入了解fcntl函数:Linux系统编程中的文件控制

文章目录 概述介绍函数原型与参数 拓展&#xff1a;fcntl改文件属性总结 概述 摘要: fcntl函数是Linux系统编程中一个重要的函数&#xff0c;用于对文件描述符进行各种控制操作。本文将详细介绍fcntl函数的原型、各个参数的用法&#xff0c;以及阻塞和非阻塞模式切换的方法&am…

Redis Pub/Sub 指南

Redis 不仅仅是一个数据库&#xff0c;还可以作为支持发布和订阅&#xff08;Pub/Sub&#xff09;操作的消息代理。本文将使用 Navicat for Redis 简要概述 Redis 的 Pub/Sub 功能。 关于发布或订阅消息范式 Pub/Sub 是一种模式&#xff0c;发送者&#xff08;广播者&#xf…

QML Book 学习基础2(基本元素控件)

目录 矩形&#xff08;Rectangle&#xff09; 文本元素 鼠标键盘交互 布局元素 矩形&#xff08;Rectangle&#xff09; 矩形项用于用纯色或渐变填充区域&#xff0c;和/或提供矩形边框。需要注意如果长宽没有设置&#xff0c;是无法看到矩形的 Rectangle {id: rect1x: 12; …

5V升压充电16.8V芯片充电管理IC

航誉微HU5912四节锂电池升压充电IC 概要 HU5912是一款 5V输入&#xff0c;支持四节锂电池的升压充电管理 IC。 HU5912 &#xff0c;采用异步开关架构&#xff0c;使其在应用时仅需 要极少的外围器件&#xff0c;可有效减少整体方案尺寸&#xff0c;降低 BOM 成本。 HU5912…

项目:点餐系统3mysql知识回顾MySQL客户端

连接数据库 mysql -uroot -p 密码&#xff1a;空 一、第三方库&#xff1a;MySQL 数据库-存储并管理数据的仓库&#xff0c;是一个C/S架构 MySQL客户端通过sql来告诉MySQL服务器&#xff0c;自己需要做什么操作 1.sql语句 sql&#xff1a;structure query language结构化查询…

SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

在上一篇文章&#xff0c;讲了服务的注册和发现。在微服务架构中&#xff0c;业务都会被拆分成一个独立的服务&#xff0c;服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式&#xff0c;一种是ribbonrestTemplate&#xff0c;另一种是feign。在这一篇文章…

浅谈卫星通信技术

目录 1.卫星的概念 2.卫星的具体作用 3.利用卫星进行通信的优势 4.卫星通信带来的技术变革 1.卫星的概念 卫星是指在地球轨道上运行的天体或人造物体。一般来说&#xff0c;我们所说的卫星主要指人造卫星&#xff0c;它是由人类设计、制造并送入轨道的人造宇宙飞行器。 人造…

mybatis:动态sql【2】+转义符+缓存

目录 一、动态sql 1.set、if 2.foreach 二、转义符 三、缓存cache 1. 一级缓存 2. 二级缓存 一、动态sql 1.set、if 在update语句中使用set标签&#xff0c;动态更新set后的sql语句&#xff0c;&#xff0c;if作为判断条件。 <update id"updateStuent" pa…

如何理解IaaS、PaaS、SaaS?盘点受欢迎的八大SaaS平台!

如何理解IaaS、PaaS、SaaS&#xff1f;他们各自的优势在哪里&#xff1f;我们又应该如何选择&#xff1f;本篇将带大家深入浅出的了解IaaS、PaaS、SaaS&#xff0c;并为大家盘点2023最受欢迎的SaaS平台。 通过本文你将了解&#xff1a; IaaS、PaaS、SaaS分别是什么我们该如何理…

省级智慧农业大数据平台项目规划建设方案[195页Word]

导读&#xff1a;原文《省级智慧农业大数据平台项目规划建设方案[195页Word]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 1 农业大数据平台项目概述 1.1 建设…