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文件系统。支持配置为以下值:
|
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。 |
Init容器也支持挂载数据卷,参数与上表类似,只需要将Container改为InitContainer。
配置说明(控制台)
通过弹性容器实例售卖页创建ECI实例时,您可以在容器组配置区域声明数据卷,然后在容器配置区域,将数据卷挂载到容器中。
声明数据卷
在容器组配置区域,展开高级配置。
在存储处选择临时目录页签,单击添加。
输入EmptyDir数据卷的名称。
挂载数据卷
在容器配置区域选择容器,展开该容器的高级配置。
打开存储开关后单击添加。
此处可添加的数据卷为配置容器组时声明的数据卷。
如果要为多个容器挂载数据卷,请选择其他容器,重复上述操作。
配置示例
调用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。