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。
配置說明(控制台)
通過Elastic Container Instance售賣頁建立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。