docker镜像在containerd为底座的k8s中使用

docker镜像和container镜像为什么不能直接共通

Docker 镜像和 containerd 镜像本质上格式兼容(都遵循 OCI 镜像规范),但默认情况下 “不能互相识别”,核心原因是存储位置、命名空间和工具链的隔离,而非镜像格式本身的差异。具体来说:

一、核心原因:存储与工具链的隔离

1. 镜像存储位置不同

Docker 和 containerd 会将镜像存储在各自独立的目录中,默认情况下不会共享存储:

Docker:镜像存储在 /var/lib/docker/overlay2(或 /var/lib/docker/image),由 Docker 自身的存储驱动(如 overlay2)管理。

containerd:镜像存储在 /var/lib/containerd/io.containerd.content.v1.content,由 containerd 的存储系统管理。

即使是同一个镜像(如 nginx:latest),Docker 拉取后会存在于 Docker 的存储目录,containerd 拉取后会存在于 containerd 的存储目录,两者互不可见。

2. containerd 的 “命名空间” 隔离

containerd 引入了内部命名空间(namespace) 机制,用于隔离不同场景的镜像 / 容器(类似 K8s 的命名空间,但作用于 containerd 内部):

默认情况下,Docker 镜像对应的 containerd 命名空间是 moby(Docker 专属)。
K8s 中使用的 containerd 命名空间是 k8s.io(K8s 专属)。

crictl(K8s 配套的容器工具)默认只查询 k8s.io 命名空间的镜像,而 Docker 拉取的镜像在 moby 命名空间,因此 crictl 看不到 Docker 镜像。

3. 工具链的 “视角” 不同

Docker 和 containerd 的命令行工具(docker、crictl、nerdctl)默认只访问自己管理的存储和命名空间:

docker images 只会显示 Docker 存储目录 + moby 命名空间的镜像。

crictl images 只会显示 containerd 存储目录 + k8s.io 命名空间的镜像。

即使是同一个镜像,只要不在工具默认的 “存储 + 命名空间” 范围内,就无法被识别。

具体操作

说明之后,实际上镜像是可以直接识别的,问题主要是存储路径和命名空间的问题,我们只需要注意下这两个问题就行,并且操作起来很简单。

首先查看docker镜像

docker images

在这里插入图片描述
把其中docker.1ms.run/tensorflow/tensorflow:1.15.5-gpu-py3这个docker镜像改成container镜像

先导出成tar包

sudo docker save -o tensorflow-gpu.tar docker.1ms.run/tensorflow/tensorflow:1.15.5-gpu-py3

然后使用ctr命令指定命名空间导入

sudo ctr -n k8s.io images import tensorflow-gpu.tar

导入成功后的提示
在这里插入图片描述
最后通过crictl查看被k8s识别到的镜像

crictl images

在这里插入图片描述
这样就完成了镜像的使用,很简单

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

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

相关文章

Java-反射机制

在 Java 编程中,“反射” 是一个贯穿基础与进阶的核心概念,它允许程序在运行时动态获取类的结构、调用方法、操作属性,甚至创建对象 —— 无需在编译期明确知道类的具体信息。一、反射是什么?首先明确一个关键定义:Jav…

ARM相关的基础概念和寄存器

目录 1、机器码 2、汇编指令 3、汇编指令集 4、架构 5、内核(CPU中的核心) 6、处理器 7、复杂指令集和精简指令集 7.1复杂指令集 7.2精简指令集 7.3修改 8、内核中的寄存器阻值 8.1溜达存储类型 8.2、AMR处理器(内核&#xff09…

PPT处理控件Aspose.Slides教程:在 C# 中将 PPTX 转换为 Markdown

将您的PowerPoint幻灯片转换为Markdown格式,使其兼容 AI 技术。在这个人工智能驱动的时代,GPT和Claude等大模型能够读取和生成基于 Markdown 的内容。此外,Markdown 还可用于博客文章和文档。因此,作为一名 .NET 开发人员&#xf…

Python 多进程(multiprocessing)

文章目录1. 多进程概述1.1. 多进程的概念1.2. 多进程注意事项2. 进程调用方式2.1. Process 类2.1.1. 构造方法2.1.2. 实例方法2.1.3. 属性2.2. 面向过程2.3. 面向对象3. 进程间通讯3.1. Queues3.2. Pipes3.3. Managers(进行共享数据)4. 进程同步5. 进程池…

推荐系统王树森(五)重排多样性提升

重排01:物品相似性的度量、提升多样性的方法_哔哩哔哩_bilibili github-PPT 前面的讨论中提到 在链路的最后进行重排,重排要插入广告和运营笔记,还要做规则打散,提高推荐的丰富性,比如说一个人特别爱看足球&#xff…

Axios多实例封装

Axios多实例封装方案 我将为您提供一个完整的Axios多实例封装方案,包含基础封装、多实例管理和使用示例。 设计思路 创建基础axios实例封装,支持请求/响应拦截器实现多实例管理器,支持不同API端点配置提供统一的错误处理机制支持请求取消功…

为量化从业者提供免费稳定的股票数据源:免费股票数据API获取实时数据、历史数据与技术指标(含多语言代码指南)实例代码演示与API文档说明

​ 近年来,股票量化分析因其科学、系统的研究方法,日益成为市场热点。而进入这一领域的首要步骤,正是获取全面、准确的股票数据——无论是实时交易行情、历史走势记录,还是企业财务与基本面信息,都是支撑量化策略的核心…

[Sync_ai_vid] UNet模型 | 音频特征提取器(Whisper)

第2章:LatentSync UNet模型 在第1章:唇形同步推理流程中,我们了解到唇形同步推理流程如同电影导演,协调各"专家模块"生成完美唇形同步视频。 本章将深入解析这个"工作室"中最核心的专家——LatentSync UNet…

工业级TF卡NAND + 北京君正 + Rk瑞芯微的应用

目录前言一:操作CS创世 SD NAND的常用命令1.查看SD设备2.挂载分区3.卸载分区4.分区管理5.格式化分区6.简单读写二:SD底层协议简要介绍三:对CS创世 SD NAND进行读写操作的三大方式1. 使用dd命令2. 使用块设备的标准接口3. 使用ioctl产生系统调…

深入解析Java并发编程与单例模式

目录 一、调度(四) 1.随机调度大环境 二、锁(二) 1.位置 2.无锁阻塞 3.重入锁 4.连续锁 4.1措施 三、线程方法(二) 1.wait 2.notify 3.wait-notify指位后移 3.1可能时再检查 3.1.1join(二) 3.1.1.1可能时再检查死亡 四、单例模式 1.实现 1.1private构造器 1…

java通过redis简单实现分布式锁

目录 一、简介 二、代码实现 1、maven添加依赖 2、核心逻辑代码 3、使用方式 三、总结 一、简介 我们知道在Java中可以通过关键字synchronized来防止并发引起的问题,而分布式中就需要考虑分布式锁了,今天来讲一个比较简单的实现,通过re…

网络编程--TCP/UDP Socket套接字

网络编程 程序员主要操作应用层和传输层来实现网络编程,也就是自己写一个程序,让这个程序可以使用网络来通信,这个程序属于应用层,实现通讯就需要获取到传输层提供的服务 这就需要使用传输层提供的api UDP: 无连接,不可…

claude-code订阅方案

Claude Code 订阅方案对比 编写日期:2025 年 08 月 20 日 🏷️ 专业版 Pro ($20/月,$200/年) 主要特性 可用模型:Claude Sonnet 4(Claude Opus 4成本太高,谨慎选择)适用场景:适合轻度…

146. LRU缓存

题目: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&#x…

第二十节:3D文本渲染 - 字体几何体生成与特效

第二十节:3D文本渲染 - 字体几何体生成与特效 TextGeometry深度解析与高级文字效果实现1. 核心概念解析 1.1 3D文字渲染技术对比技术原理优点缺点TextGeometry将字体轮廓转换为3D网格真实3D效果,支持材质性能开销大,内存占用高Canvas纹理将文…

zzz‘sJava知识点概括总结

类型转化 字符串&#xff1a;c语言&#xff1a;char Java&#xff1a;string 表达式值的类型由最高类型决定&#xff1a; 取值范围&#xff1a;byte<short<int<long<float<double&#xff08;且运算时byte和short都是转化为int类型进行计算防止数据溢出&…

SONiC 之 Testbed(2)Ansible

Ansible 是一款由 Red Hat 主导开发的 开源自动化工具&#xff0c;专注于 配置管理、应用部署、任务编排和IT自动化。它基于 无代理&#xff08;Agentless&#xff09;架构&#xff0c;通过 SSH&#xff08;默认&#xff09;或 WinRM 协议与目标设备通信&#xff0c;无需在被控…

瑞芯微RK3568与君正X2600e平台Linux系统CS创世SD NAND应用全解析与驱动架构详解

前言 今天就瑞芯微平台和北京君正平台下的linux系统中关于CS创世 SD NAND的使用做一些经验的分享&#xff0c;如有不正&#xff0c;请批评指正&#xff1b; 采用的开发板是RK3568和x2600e&#xff0c;ubuntu版本是20.04&#xff0c;交叉编译工具链是aarch64-linux-gnu-和mips…

深入解析 Flink Function

RichFunctionFunction只是个标记接口public interface Function extends java.io.Serializable {}RichFunction 的核心语义是为用户定义的函数&#xff08;UDF&#xff09;提供生命周期管理和运行时上下文访问的能力。任何一个普通的 Flink Function 接口&#xff08;例如 MapF…

JMeter —— 压力测试

目录 常用的性能指标 一、吞吐量类指标 二、响应时间类指标 三、资源利用率指标 JMeter 一、JMeter 简介 二.下载安装JMeter&#xff1a; 三.如何使用JMeter&#xff1a; 压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都是为了系统…