为ECI实例挂载EmptyDir数据卷

EmptyDir数据卷是一个空的目录,用于临时存放数据,便于容器之间共享数据。本文介绍如何为ECI实例挂载EmptyDir数据卷。

注意事项

EmptyDir为临时存储,当ECI实例删除或重启时,EmptyDir数据卷中保存的数据均会被清空。

配置说明(OpenAPI)

调用CreateContainerGroup接口创建ECI实例时,您可以通过Volume相关参数声明数据卷,然后通过Container.VolumeMount相关参数为容器挂载数据卷。相关参数说明如下,更多信息,请参见CreateContainerGroup

声明数据卷

通过Volume相关参数声明数据卷时,需要先明确Volume的名称和类型。再根据Volume.N.Type的取值,进一步配置该类型数据卷的相关参数。

名称

类型

示例值

描述

Volume.N.Name

String

emptydir-demo

数据卷名称。

Volume.N.Type

String

EmptyDirVolume

取值为EmptyDirVolume,表示创建一个EmptyDir类型的数据卷。

Volume.N.EmptyDirVolume.Medium

String

Memory

EmptyDir数据卷的存储媒介。默认为空,表示使用node文件系统。支持配置为以下值:

  • Memory:表示使用内存。

  • LocalRaid0:表示将本地盘组成RAID 0。

    该取值仅适用于创建本地盘实例并挂载本地盘的场景。更多信息,请参见指定本地盘规格创建实例

Volume.N.EmptyDirVolume.SizeLimit

String

256Mi

EmptyDir数据卷的大小。取值请带上单位,建议使用Gi或Mi。

说明

对于Medium为Memory的EmptyDirVolume,支持设置SizeLimit来修改实例的shm大小。设置Medium和SizeLimit后,需要将EmptyDirVolume挂载到容器的/dev/shm目录。

挂载数据卷

声明数据卷后,可以通过VolumeMount相关参数将数据卷挂载到容器中。

名称

类型

示例值

描述

Container.N.VolumeMount.N.Name

String

test-volume

要挂载到容器的数据卷的名称,对应Volume.N.Name的值。

Container.N.VolumeMount.N.MountPath

String

/usr/share

挂载目录。

容器挂载目录下的内容会被数据卷的内容直接覆盖,请准确填写。

Container.N.VolumeMount.N.SubPath

String

/usr/sub

数据卷下的子目录。方便实例将同一个数据卷下的不同目录挂载到容器的不同目录。

Container.N.VolumeMount.N.ReadOnly

Boolean

false

挂载目录是否只读。默认为false。

Container.N.VolumeMount.N.MountPropagation

String

None

数据卷的挂载传播设置。挂载传播允许将容器挂载的卷共享到同一ECI实例中的其他容器,甚至可以共享到同一宿主机上的其他ECI实例。取值范围:

  • None:该卷不感知任何后续在此卷或其子目录上执行的挂载操作。

  • HostToContainer:该卷将会感知到后续在此卷或其子目录上的挂载操作。

  • Bidirectional:和HostToContainer类似,能感知挂载操作。另外,该卷将被传播回宿主机和使用同一卷的所有ECI实例的所有容器。

默认值:None。

说明

Init容器也支持挂载数据卷,参数与上表类似,只需要将Container改为InitContainer。

配置说明(控制台)

通过弹性容器实例售卖页创建ECI实例时,您可以在容器组配置区域声明数据卷,然后在容器配置区域,将数据卷挂载到容器中。

声明数据卷

  1. 容器组配置区域,展开高级配置

  2. 存储处选择临时目录页签,单击添加

  3. 输入EmptyDir数据卷的名称。

    临时目录

挂载数据卷

  1. 容器配置区域选择容器,展开该容器的高级配置。

  2. 打开存储开关后单击添加。

    此处可添加的数据卷为配置容器组时声明的数据卷。

    临时目录2

说明

如果要为多个容器挂载数据卷,请选择其他容器,重复上述操作。

配置示例

调用CreateContainerGroup接口创建ECI实例,并为其挂载EmptyDir数据卷。参数示例如下,更多信息,请参见CreateContainerGroup

  • 示例一:容器之间共享数据

    ContainerGroupName=test-emptydir
    # 声明数据卷
    Volume.1.Name=emptydir-demo
    Volume.1.Type=EmptyDirVolume
    #为容器1挂载数据卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=emptydir-demo
    Container.1.VolumeMount.1.MountPath=/data1
    # 为容器2挂载数据卷
    Container.2.Name=busybox
    Container.2.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/busybox:1.30
    Container.2.Command.1=sleep
    Container.2.Arg.1=999999
    Container.2.VolumeMount.1.Name=emptydir-demo
    Container.2.VolumeMount.1.MountPath=/data2

    上述示例中,容器1和容器2共享使用了EmptyDir数据卷,容器1的/data1目录和容器2的/data2目录下默认为空。在任一容器内,在EmptyDir数据卷中新增的文件,在另一容器内也可以访问。

  • 示例二:修改实例shm大小

    ContainerGroupName=test-emptydir
    # 声明数据卷
    Volume.1.Name=emptydir-shm
    Volume.1.Type=EmptyDirVolume
    Volume.1.EmptyDirVolume.Medium=Memory
    Volume.1.EmptyDirVolume.SizeLimit=256Mi
    # 为容器1挂载数据卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=emptydir-shm
    Container.1.VolumeMount.1.MountPath=/dev/shm

    上述示例中,通过设置EmptyDirVolume.Medium为Memory,EmptyDirVolume.SizeLimit为256Mi,并将EmptyDirVolume挂载到/dev/shm目录,从而实现将ECI实例的shm大小改为256 MiB。