长期支持版本

    本地卷管理

    概述

    iSula 管理的容器销毁后,容器内自身所有的数据都会被销毁。如果用户希望容器销毁后依然保留数据,则需要有一种持久化数据的机制。iSula 允许将主机上的文件、目录或卷在容器运行时挂载到容器内。用户可以将需要持久化的数据写入容器内的挂载点。则容器销毁后,主机上的文件、目录、卷依然保留。如果用户需要销毁主机上的文件、目录、卷,可以手动删除文件、目录或者执行 iSula 的相关命令删除卷。对于卷的管理目前 iSula 只支持本地卷,本地卷又分为有名卷和匿名卷。由用户指定名称生成的卷称为有名卷;用户没有指定卷名称,由 iSula 自动生成卷名(一个64位的随机数)的卷称为匿名卷。

    本章介绍通过 iSula 管理本地卷的使用方法。

    注意事项

    • 卷名称长度2-64个字符,符合正则表达式:^[a-zA-Z0-9][a-zA-Z0-9_.-]{1,63}$,即卷名称首字符必须为字母或者数字,从第二个字符开始可以为字母、数字或者"_"、"."、"-"这几个字符。
    • 创建容器时,如果卷对应的容器内的挂载点存在数据,则默认会拷贝到卷里。如果拷贝过程中出现了 iSula 崩溃重启或者系统掉电之类的异常,则卷内的数据可能是不完整的,这时需要手动删除卷或者卷内数据,确保数据的正确完整。

    使用方法

    使用-v参数挂载数据

    命令格式

    isula run -v [SRC:]DST[:MODE,MODE...] IMAGE
    

    功能描述

    使用 create / run 创建并运行容器时,使用 -v/--volume 参数将主机上的文件、目录或者卷挂载到容器内用于数据持久化。

    参数说明

    • SRC: 用于挂载的文件、目录或者卷在主机上的路径,当值为绝对路径时,表示挂载主机上的文件或者文件夹。当值为卷名时,表示挂载卷。当省略该项时,表示挂载匿名卷。当文件夹或者卷不存在时,iSula会先创建一个新的文件夹/卷,再进行挂载操作。
    • DST: 容器内的挂载路径,必须为绝对路径。
    • MODE: 当挂载的源是目录或者文件时,合法的参数是ro/rw/z/Z/private/rprivate/slave/rslave/shared/rshared。同类型的参数只能配置一个。当挂载的源是卷时,合法的参数是ro/rw/z/Z/nocopy,同类型的参数只能配置一个。多个属性之间使用","连接。参数含义如下:
    参数参数含义
    ro容器内挂载点挂载为只读属性
    rw容器内挂载点挂载为读写属性
    z如果开启了SELinux,则挂载时添加SELinux共享标签
    Z如果开启了SELinux,则挂载时添加SELinux私有标签
    private容器内挂载点挂载为私有传播属性
    rprivate容器内挂载点递归挂载为私有传播属性
    slave容器内挂载点挂载为从属传播属性
    rslave容器内挂载点递归挂载为从属传播属性
    shared容器内挂载点挂载为共享传播属性
    rshared容器内挂载点递归挂载为共享传播属性
    nocopy不拷贝挂载点内的数据,该参数不进行配置时默认会拷贝数据。另外,如果卷里已经有数据了,也不会进行拷贝

    示例

    基于 busybox 运行容器并创建/挂载名称为 vol 的卷到容器的 /vol 目录,同时配置挂载点为只读,并且如果容器中对应挂载点有数据也不进行拷贝。

    isula run -v vol:/vol:ro,nocopy busybox
    

    使用--mount参数挂载数据

    命令格式

    isula run --mount [type=TYPE,][src=SRC,]dst=DST[,KEY=VALUE] busybox
    

    功能描述

    使用 create / run 创建并运行容器时,使用 --mount 参数将主机上的文件、目录、卷或者文件系统挂载到容器内用于数据持久化。

    参数说明

    • type: 挂载到容器中的数据的类型,类型可以是 bind、volume、squashfs、tmpfs, 省略该项时默认为volume类型。
    • src: 用于挂载的文件、目录或者卷在主机上的路径。当值为绝对路径时,表示挂载主机上的文件或者目录。当值为卷名时,表示挂载卷。当省略该项时,表示匿名卷。当文件夹或者卷不存在时,iSula会先创建一个新的文件/卷,再进行挂载操作。该项的关键字 src 也可以写成 source。
    • dst: 容器内的挂载路径,必须为绝对路径。该项的关键字 dst 也可以写成 destination 或者 target。
    • KEY=VALUE: 表示 --mount 的参数,可以取如下值:
    KEY 值VALUE
    selinux-opts/bind-selinux-optsz或者Z。z表示如果开启了SElinux,则挂载时添加SElinux共享标签;Z表示如果开启了SElinux,则挂载时添加SElinux私有标签
    ro/readonly0/false 表示挂载成读写属性,1/true 表示挂载成只读属性。该项的值可以省略表示挂载成只读。该项只在 type=bind 时支持配置该参数
    bind-propagation值为private/rprivate/slave/rslave/shared/rshared,含义同上面-v参数中对应的值。只在type=bind时支持该参数
    volume-nocopy不拷贝挂载点内的数据,该参数不进行配置时默认会拷贝数据。另外,如果卷里已经有数据了,也不会进行拷贝。只在 type=volume 时支持该参数
    tmpfs-size挂载tmpfs时指定挂载的tmpfs空间的最大值,默认无限制
    tmpfs-mode挂载tmpfs时指定挂载的权限,默认1777

    示例

    基于 busybox 运行容器并创建/挂载名称为 vol 的卷到容器的 /vol 目录,同时配置挂载点为只读,并且如果容器中对应挂载点有数据也不进行拷贝。

    isula run --mount type=volume,src=vol,dst=/vol,ro=true,volume-nocopy=true busybox
    

    复用其他容器中的挂载配置

    命令格式

    isula run --volumes-from CON1[:MODE] busybox
    

    功能描述

    使用 create / run 创建并运行容器时,使用 --volumes-from 参数表示挂载点配置包括CON1容器的挂载点配置。可以配置多个 --volumes-from 参数。

    参数说明

    • CON1: 被复用挂载点的容器的名称或者ID。
    • MODE: 值为ro表示复用的挂载点挂载为只读属性,值为rw表示复用的挂载点挂载为读写属性。

    示例

    假设已经有名称为 container1 的容器配置了卷 vol1 到容器目录 /vol1,名称为 container2 的容器配置了卷 vol2 到容器目录 /vol2。现在运行一个新的容器复用 container1 和 container2 的挂载配置,即卷 vol1 挂载到容器的 /vol1 目录,vol2 挂载到容器的 /vol2 目录。

    isula run --volumes-from container1 --volumes-from container2 busbyox
    

    使用镜像中的匿名卷

    使用镜像中的匿名卷不需要用户做任何配置。如果镜像中配置了匿名卷,则在运行容器时 iSula 会自动创建一个匿名卷并挂载到镜像中指定的路径供用户使用。用户可以往容器中的匿名卷挂载点写入数据进行数据持久化。

    卷的查询

    命令格式

    isula volume ls [OPTIONS]
    

    功能描述

    查询 iSula 管理的所有卷。

    参数说明

    OPTIONS 可选参数:

    • -q,--quiet: 如果不加这个参数,默认只会查询到卷的驱动信息和卷的名称,添加该参数表示只查询卷的名称。

    示例

    查询 iSula 管理的所有卷,只返回卷名称。

    isula volume ls -q
    

    卷的删除

    命令格式

    isula volume rm [OPTIONS] VOLUME [VOLUME...]
    isula volume prune [OPTIONS]
    

    功能描述

    • rm 命令:删除指定的卷,如果卷被容器使用了,则会删除失败。
    • prune 命令:删除所有未被容器使用的卷。

    参数说明

    prune 命令的 OPTIONS 可选参数:

    • -f,--force: 表示不弹出“确认是否要删除”的提示,默认会有风险提示,需要输入 y 才能继续执行。

    示例

    删除卷 vol1 和卷 vol2

    isula volume rm vol1 vol2
    

    删除所有未被使用的卷,不弹出风险提示,格式如下:

    isula volume prune -f
    

    注意事项

    冲突合并规则

    如果卷的挂载点有冲突,则按照如下规则处理:

    • -v 和 --mount 的配置冲突,则返回失败。
    • --volumes-from 里获取的配置,如果和 -v/--mount 配置有冲突,则丢弃。
    • 镜像中的匿名卷配置,如果和 -v/--mount/--volumes-from 配置有冲突,则丢弃。

    iSula和Docker的差异

    iSula行为Docker行为
    卷名称最长64个字符卷名称长度没有限制
    --mount 参数,如果挂载的源不存在,则会创建--mount 参数,如果挂载的源不存在,则会报错
    --mount 参数,支持 bind-selinux-opts 和 selinux-opts 参数配置 z/Z--mount 参数,不支持 bind-selinux-opts 和 selinux-opts 参数
    挂载点冲突合并规则,不做特殊处理挂载点冲突合并规则,将 -v 指定的匿名卷当成镜像中的匿名卷一样处理
    volume prune 命令,提示回收了多少空间volume prune 命令,不会提示回收了多少空间
    -v/--mount/--volumes-from 配置在 hostconfig 中,匿名卷配置在 config 中-v 配置的匿名卷放在 config 配置中,其他配置在 hostconfig 中

    文档捉虫

    “有虫”文档片段

    问题描述

    提交类型 issue

    有点复杂...

    找人问问吧。

    PR

    小问题,全程线上修改...

    一键搞定!

    问题类型
    规范和低错类

    ● 错别字或拼写错误;标点符号使用错误;

    ● 链接错误、空单元格、格式错误;

    ● 英文中包含中文字符;

    ● 界面和描述不一致,但不影响操作;

    ● 表述不通顺,但不影响理解;

    ● 版本号不匹配:如软件包名称、界面版本号;

    易用性

    ● 关键步骤错误或缺失,无法指导用户完成任务;

    ● 缺少必要的前提条件、注意事项等;

    ● 图形、表格、文字等晦涩难懂;

    ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

    正确性

    ● 技术原理、功能、规格等描述和软件不一致,存在错误;

    ● 原理图、架构图等存在错误;

    ● 命令、命令参数等错误;

    ● 代码片段错误;

    ● 命令无法完成对应功能;

    ● 界面错误,无法指导操作;

    风险提示

    ● 对重要数据或系统存在风险的操作,缺少安全提示;

    内容合规

    ● 违反法律法规,涉及政治、领土主权等敏感词;

    ● 内容侵权;

    您对文档的总体满意度

    非常不满意
    非常满意
    提交
    根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
    文档捉虫
    编组 3备份