OCI制作

编程入门 行业动态 更新时间:2024-10-27 17:17:47

<a href=https://www.elefans.com/category/jswz/34/1731673.html style=OCI制作"/>

OCI制作

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 .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相关系统调用创建和运行容器。

更多推荐

OCI制作

本文发布于:2023-11-16 11:29:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1620220.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:OCI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!