全部產品
Search
文件中心

Elastic Container Instance:為ECI執行個體掛載EmptyDir資料卷

更新時間:Oct 25, 2024

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。

配置說明(控制台)

通過Elastic Container Instance售賣頁建立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。