当前位置: 首页 > news >正文

【记录贴】docker镜像格式报错

1,错误内容

最近想要补一补docker的基础知识,跟着练习的时候,发现下面的错误。
换了其他镜像(docker pull ubantu)也存在同样的问题:
错误内容:docker: mediaType in manifest should be 'application/vnd.docker.distribution.manifest.v2+json' not 'application/vnd.oci.image.manifest.v1+json'.

[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
docker: mediaType in manifest should be 'application/vnd.docker.distribution.manifest.v2+json' not 'application/vnd.oci.image.manifest.v1+json'.

2,发生原因

查看内容提示,可以看出,原因是期待的镜像格式是'application/vnd.docker.distribution.manifest.v2+json',但是下载下来的镜像格式是'application/vnd.oci.image.manifest.v1+json'.,所以检查不通过,报错。

问题1:这个格式用来干啥?
简单来说,镜像清单描述了一个 Docker 镜像的各种组成部分,告诉用户一个镜像是如何组成的。有多种格式,上面也只是其中两种。
参考下面文章:
K8S 1.20 弃用 Docker 评估之:Docker 和 OCI 镜像格式的差别-腾讯云开发者社区-腾讯云 (tencent.com)

问题2:这两个格式的区别
我的理解,application/vnd.docker.distribution.manifest.v2+json是docker工具(容器管理工具除了docker,还有其他,比如podman)这边自己的格式,application/vnd.oci.image.manifest.v1+json更加通用(除了docker,其他容器管理工具也能用)。
看了一下dockerhub上的镜像,一些最新的镜像也都转成后者了。

问题3:为啥会报错?
本地docker版本太低,不支持application/vnd.oci.image.manifest.v1+json格式。

3,如何解决?

解决1:升级docker版本,将docker升级到比较新的能够支持application/vnd.oci.image.manifest.v1+json格式的版本(具体多少之后支持,这个需要查一下),有知道的小伙伴可以call我一下。(我用的第二种方法)


解决2:拉取镜像的时候,采用比较旧的镜像(还是application/vnd.docker.distribution.manifest.v2+json的格式)。
可以去docker hub上面看一下有没有格式相关的信息,或者去对应的github上查看更新履历。

hub.docker.com

相关文章:

  • 【AI】DeepStream(07):deepstream-app-示例演示
  • 003 CentOS 7.9 mysql8.3.0安装及配置
  • Swagger2 和 Swagger3 的不同
  • 网络攻防概述(基础概念)
  • Makefile学习笔记15|u-boot顶层Makefile01
  • MyBatis复习笔记
  • 我的世界开服保姆级教程
  • redis数据操作相关命令
  • Java项目:基于SSM框架实现的企业人事管理系统单位人事管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • Leetcode 力扣92. 反转链表 II (抖音号:708231408)
  • PGP安装以及汉化
  • PCL 法向量加权的RANSAC拟合分割平面
  • 刷题之路径总和Ⅲ(leetcode)
  • nginx文件解析漏洞测试
  • Python基于PyQt6制作GUI界面——按钮
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【css3】浏览器内核及其兼容性
  • flask接收请求并推入栈
  • gcc介绍及安装
  • golang 发送GET和POST示例
  • Joomla 2.x, 3.x useful code cheatsheet
  • React Transition Group -- Transition 组件
  • SOFAMosn配置模型
  • SpiderData 2019年2月13日 DApp数据排行榜
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 好的网址,关于.net 4.0 ,vs 2010
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用 QuickBI 搭建酷炫可视化分析
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (3)llvm ir转换过程
  • (Python) SOAP Web Service (HTTP POST)
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (力扣)循环队列的实现与详解(C语言)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (原创)可支持最大高度的NestedScrollView
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • **PHP分步表单提交思路(分页表单提交)
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net程序帮助文档制作
  • .net反编译的九款神器
  • @property @synthesize @dynamic 及相关属性作用探究
  • [20171101]rman to destination.txt
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [C/C++]数据结构 栈和队列()
  • [C语言]编译和链接
  • [Design Pattern] 工厂方法模式
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [Django开源学习 1]django-vue-admin
  • [GHCTF 2024 新生赛]ezzz_unserialize
  • [GICv3] 3. 物理中断处理(Physical Interrupt Handling)