• OCI 个人笔记(二)


    原文 https://github.com/opencontainers/runtime-spec/blob/main/config.md#mounts

    这个配置文档宝航了必要的用来实现标容器准操作元数据定义。包含启动工程,环境变量注入,沙箱功能等。

    在本文的典型的规范定义中,存在JSON形式的规范在schema/config-schema.json以及golang形式的定义 specs-go/config.go。特定平台的配置规范定义于平台相关章节中。 对于特定平台属性,golang代码中有平台相关的标签来进行表征。如platform:"linux,solaris"
    具体定义如下

    文件版本

    ociVersion 遵循SemVer v2.0.0 格式,定义OCI版本。举例如果一个配置版本是1.1,那么其可用于1.1以及之后版本中。但并不能完全在1.1一下版本如1.0中适配或兼容。
    例如

    "ociVersion": "0.1.0"
    
    • 1

    Root

    root对象是可选配置用来秒时容器的root文件系统,对于windows和windows服务器而言是必选项。对于Hyper-V container而言是可选项。对于其他平台,本字段为必选项。

    • path string类型,可选项 容器的root文件系统。
      • 目录必须存在
      • 对于windows系统必须为volume GUID path
      • 对于POSIX平台,path必须为绝对路径或者相对路径。
    • readonly bool类型,可选项 容器内部root文件系统是否必须为read only,默认关闭
      • 在window环境中,false或者缺省

    如 (POSIX platforms)

    "root": {
        "path": "rootfs",
        "readonly": true
    }
    
    • 1
    • 2
    • 3
    • 4

    如 (Windows)

    "root": {
        "path": "\\\\?\\Volume{ec84d99e-3f02-11e7-ac6c-00155d7682cf}\\"
    }
    
    • 1
    • 2
    • 3

    Mounts 挂载

    数组类型,用于非root类型目录的挂载。运行时必须按照指定顺序进行挂载。对于linux操作系统而言,具体参数在mount(2)的man页面中,对于Solaris,挂载在fs资源的zonecfg man页面中。

    • destination string 必须 目标挂载地址 容器内部路径
    • source string 可选 一个设备名称,可以是文件或路径名称用于挂载。
    • options 挂载所需的参数

    例如 (Windows)

    "mounts": [
        {
            "destination": "C:\\folder-inside-container",
            "source": "C:\\folder-on-host",
            "options": ["ro"]
        }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    POSIX-platform挂载

    • type 类型 可选 如 ext2
    • uidMappings 可选 转化源文件系统到目标系统的UIDs
    • gidMappings 可选 转化源文件系统到目标系统的GIDs
      例如 linux
    "mounts": [
        {
            "destination": "/tmp",
            "type": "tmpfs",
            "source": "tmpfs",
            "options": ["nosuid","strictatime","mode=755","size=65536k"]
        },
        {
            "destination": "/data",
            "type": "none",
            "source": "/volumes/testing",
            "options": ["rbind","rw"]
        }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    进程

    进程 可选对象 明确了容器的进程 属性在start阶段必须存在

    • terminal bool 可选 明确终端是否附属于进程,默认关闭
    • consoleSize 对象可选 明确console大小的字结束,运行时必须忽略此选项如果不存在terminal配置
      • height uint
      • width unit
    • cwd 工作路径 必须为绝对路径
    • env 环境变量列表
    • args 参数列表
    • commandLine string 可选, 明确完整命令用于执行。

    POSIX process

    rlimits 数组可选 允许设置资源上线对于进程。

    • type 类型
      • linux getrlimit man, 如 RLIMIT_MSGQUEUE
      • solaris getrlimit man, 如RLIMIT_CORE
        运行时必须成生一个错误,如果任何值不能映射到内核接口。
    • soft 限制
    • hard 只有授权进程可以使用hard limit

    Linux Process

    • apparmorProfile 可选 相见 AppArmor documentation.
    • capabilities 可选 运行时不能失败,如果容器配置需要过多的capabilities
      • effective
      • bounding
      • inheritable
      • premitted
      • ambient
    • noNewPrivileges 是否需要课外的privileges
    • oomScoreAdj
    • selinuxLabel

    用户

    用户是基于平台的设置

    POSIX

    用户结构包含

    • uid
    • gid
    • umask
    • addiotioanlGids

    windows

    • username

    主机名

    主机名是容器的主机名,被其他容器内部进程可见。

    Platform-specific configuration

    • linux (object, OPTIONAL) Linux-specific configuration. This MAY be set if the target platform of this spec is linux.
    • windows (object, OPTIONAL) Windows-specific configuration. This MUST be set if the target platform of this spec is windows.
    • solaris (object, OPTIONAL) Solaris-specific configuration. This MAY be set if the target platform of this spec is solaris.
    • vm (object, OPTIONAL) Virtual-machine-specific configuration. This MAY be set if the target platform and architecture of this spec support hardware virtualization.
    • zos (object, OPTIONAL) z/OS-specific configuration. This MAY be set if the target platform of this spec is zos.

    其他相关笔记 https://blog.csdn.net/oe1019/article/details/123755547

  • 相关阅读:
    区分前端HTML标签中的href和src
    五、分页总结
    强平jraft阻塞和运维问题-试验对比计划
    关于各种PLMN的选择
    Python语言程序设计 习题2
    (附源码)springboot高校宿舍交电费系统 毕业设计031552
    【Oracle】数据库账号频繁被锁问题解决
    科技与环卫的结合,是智慧公厕厂家的使命
    sqlalchemy 连接池
    Kafka元数据拉取流程
  • 原文地址:https://blog.csdn.net/oe1019/article/details/125569461