长期支持版本

    社区创新版本

      本地卷管理

      概述

      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备份