OCI制作

news2025/1/15 19:58:29

1.制作OCI包并运行容器


容器镜像本质上就是一个根文件系统镜像。但容器镜像又不仅仅是一个根文件系统镜像,容器镜像有一个OCI标准规范,而runc命令用于运行根据OCI规范打包的应用程序,也就是说,runc命令是OCI规范的兼容实现。
OCI容器镜像是堆叠起来的根文件系统和config.json配置文件的捆绑(bundle),如图11-5所示。runc 命令符合OCI规范(具体来说,是runtime-spec),这意味着runc命令可以使用OCI镜像创建并运行一个容器。值得一提的是,创建并运行一个容器并不需要知道根文件系统是一个单层的普通文件系统,还是一个堆叠起来的根文件系统,因为不管是单层还是多层都会合并为一个容器层(container layer)根文件系统。换句话说,OCI包只是根文件系统和config.json配置文件的捆绑。层、标签、容器注册表和存储库等功能都不是OCI包(甚至容器运行时)规范的一部分。

图11-5 OCI容器镜像构成示意图
有一个单独的OCI-spec(image-spec)定义OCI镜像(OCI image)。OCI镜像是一种堆叠起来的文件系统,多层文件目录合并起来形成所需的根文件系统,多个层之间有依赖关系,这种依赖关系称为父子关系,被依赖的层为父层(parent)。底层文件系统往往都是只读的,容器在运行过程中系统只能修改最上层的可读写文件系统。
具体来说,从一个比较高层次的角度来看这个OCI镜像规范,一个镜像由4部分组成—— Manifest、Image Index(可选)、Layers、Configuration。Manifest包括镜像内容的元信息和镜像层(Layers)的摘要信息,这些镜像层可以解包部署成最后的运行环境。Image Index则从更高的角度描述了Manifest,主要应用于镜像跨平台。Configuration则包含了应用的参数环境。这些OCI镜像规范的主要目的是统一各种容器工具的镜像格式,让标准镜像能够在多种容器软件下使用。篇幅所限,这里不详述OCI镜像规范的细节。
OCI镜像、OCI包和OCI容器运行时如图11-6所示,OCI镜像可以解包(unpack)成OCI包,OCI容器运行时工具(比如runc)可以将OCI包在容器中运行起来。

图11-6 OCI镜像、OCI包和OCI容器运行时
制作OCI镜像的方法在11.4节介绍,这里仅给出一个简便的制作OCI包并运行容器的做法,提供如下命令仅供参考。

$ sudo apt install docker.io # 可以通过安装docker获得runc命令
$ mkdir oci-bundle
$ cd oci-bundle
~/oci-bundle $ wget https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-minirootfs-3.15.1-x86_64.tar.gz
~/oci-bundle $ mkdir rootfs
~/oci-bundle $ cd rootfs
~/oci-bundle/rootfs$ tar -zxvf ../alpine-minirootfs-3.15.1-x86_64.tar.gz
~/oci-bundle/rootfs$ ls
bin  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
~/oci-bundle/rootfs$ cd ..
~/oci-bundle $ runc spec # 生成一个config.json文件
~/oci-bundle $ ls
alpine-minirootfs-3.15.1-x86_64.tar.gz  config.json  rootfs
~/oci-bundle $ sudo runc run test
/ # ls
bin  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var


借助runc spec命令生成config.json文件,从而将一个rootfs根文件系统做成OCI包,这时通过sudo runc run test命令运行一个容器。
runc符合OCI规范,可以生成OCI包,并可以通过调用namespace相关系统调用创建和运行容器。

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

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

相关文章

shell script函数function篇

function fname(){ 程序段 } #这个比较熟悉了,和其他计算机语言定义函数的格式都是相同的,上案例,自定义printf函数 总结:函数定义的格式,和其他语言大同小异,不同的是在函数调用方面,c和java…

【GEE】4、 Google 地球引擎中的数据导入和导出

1简介 在本模块中,我们将讨论以下概念: 如何将您自己的数据集引入 GEE。如何将来自遥感数据的值与您自己的数据相关联。如何从 GEE 导出特征。 2背景 了解动物对环境的反应对于了解如何管理这些物种至关重要。虽然动物被迫做出选择以满足其基本需求&am…

机器学习---SVM目标函数求解,SMO算法

1. 线性可分支持向量机 1.1 定义输入数据 假设给定⼀个特征空间上的训练集为: 其中,(x , y )称为样本点。 x 为第i个实例(样本)。 y 为x 的标记: 当y 1时,x 为正例;当y −1时,x…

✔ ★【备战实习(面经+项目+算法)】 11.5学习

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

【LeetCode力扣】287.寻找重复数

1、题目介绍 原题链接&#xff1a;287. 寻找重复数 - 力扣&#xff08;LeetCode&#xff09; 示例 1&#xff1a; 输入&#xff1a;nums [1,3,4,2,2] 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [3,1,3,4,2] 输出&#xff1a;3提示&#xff1a; 1 < n &l…

由于找不到vcomp140.dll,无法继续执行代码问题的5种修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些奇怪的错误提示&#xff0c;其中最常见的就是“无法找到xxx.dll文件”。而其中一个常见的问题就是“找不到vcomp140.dll无法继续执行代码”这个错误通常会导致某些应用程序无法正常运行。那么&#xff0c;当遇到这个问题时&am…

腾讯云CVM服务器购买流程_省钱入口(一步步操作)

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动机&#xff0c;选择范围窄&#xff0c;但是…

删除链表的倒数第 N 个结点

LeetCode 19. 删除链表的倒数第 N 个结点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *n…

Sublime Text 4 激活教程,内含码(亲测有效) 原创

给大家分享一个 Sublime Text 4 免费注册方法&#xff0c;亲测可用&#xff0c;希望能帮助到大家&#xff0c;上面是我激活成功的截图。 前言 Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器。 Sublime Text具有漂亮的用户界面和强大的功能&#xff0c;例如代码缩略图…

Glide transform CircleCrop()圆图,Kotlin

Glide transform CircleCrop()圆图&#xff0c;Kotlin import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load.resource.bitmap.CircleCropclass MainActivity : AppCompatActivity() {o…

【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志

文章目录 前言配置日志实现前言 日志(Log)是每个程序都不可或缺的一部分,它可以帮助开发人员诊断和调试问题。Mybatis,作为一款备受赞誉的ORM框架,自然也提供了强大的日志功能。 它不仅提供了内置的标准实现,还支持集成各种主流的日志框架,让我们可以轻松地查看最终执行…

C++入门指南:string类文档详细解析(非常经典,建议收藏)

C入门指南&#xff1a;string类 一、 string类解读二、 string类的常用接口说明2.1 string类对象的常见构造2.2 string类对象的容量操作2.3 string类对象的访问及遍历操作2.4 string类对象的修改操作2.5 string类非成员函数 一、 string类解读 string类文档 具体如下&#xff…

剑指JUC原理-12.手写简易版线程池思路

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

为什么要学中文编程?它能有哪些益处?免费版编程工具怎么下载?系统化的编程教程课程怎么学习

一、为什么要学习这个编程工具&#xff1f;能给自己带来什么益处&#xff1f; 1、不论在哪里上班&#xff0c;都不是铁饭碗&#xff1a;现在全球经济低迷&#xff0c;使得很多企业倒闭&#xff0c; 大到知名国企小到私营企业&#xff0c;大量裁员。任何人都无法保证自己现在的…

操作系统学习与思考

x86体系架构 x86是因特尔8086代芯片的CPU总线位数以及寄存器种类的规范&#xff0c;大部分操作系统都是以该规范作为基准来生产的 计算机组成 CPU&#xff0c;可以根据程序计数器进行取指令操作&#xff0c;并根据指令执行运算&#xff08;加、减、乘、除&#xff09;。运算所…

从0到1:腾讯云服务器使用教程

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网txyfwq.com分享从0到1腾讯云服务器入门教程&#xff1a; 目录 腾讯云服务器入门…

多目标优化算法:多目标霸王龙优化算法(MOTROA)MATLAB

一、霸王龙优化算法 霸王龙优化算法&#xff08;Tyrannosaurus optimization&#xff0c;TROA&#xff09;由Venkata Satya Durga Manohar Sahu等人于2023年提出&#xff0c;该算法模拟霸王龙的狩猎行为&#xff0c;具有搜索速度快等优势。 参考文献&#xff1a; [1]Venkata …

pg14-sql基础(二)-排序与统计

排序 SELECT employee_id, first_name, last_name, hire_date, salary FROM employees ORDER BY first_name; --按字母&#xff0c;默认升序 ORDER BY hire_date ASC; --升序 ORDER BY hire_date DESC; --降序SELECT employee_id, first_name, last_name, hire_date, salary F…

[MICROSAR Adaptive] --- autosar官方文档阅读建议

目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径。看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如直接看官方文档更全面深入。 1 Adaptive AUTOSAR 文档官方下载地址 https://www.autosar.org/sta…

百面深度学习-循环神经网络

循环神经网络 什么是循环神经网络&#xff1f; 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类用于处理序列数据的神经网络。你可以将它想象成一个机器&#xff0c;它不仅考虑当前的输入&#xff0c;还考虑之前接收过的输入。这使得它非…