OCI制作

2023-11-05 22:36
文章标签 制作 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 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相关系统调用创建和运行容器。

这篇关于OCI制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352911

相关文章

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系

OpenStack镜像制作系列2—Windows7镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系列

OpenStack镜像制作系列1—环境准备

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

CSDN:OpenStack镜像制作教程指导(全)

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录,涉及基本环境准备、常见类型操作系统的镜像制作。 让你可以从零开始安装一个操作系统,并支持个性化制作OpenStack镜像。 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows

docker学习系列(四)制作基础的base项目镜像--jdk+tomcat

前面已经完成了docker的安装以及使用,现在我们要将自己的javaweb项目与docker结合 1.1准备jdk+tomcat软件 ​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于Linux机器的本地目录/usr/ect/wt/下(利用xshell上传)。利用linux命令 tar -zxvf apache-tom