このトピックでは、Elastic Container Instance (ECI) インスタンスに emptyDir ボリュームをマウントして、一時ストレージとして利用したり、コンテナ間でデータを共有したりする方法について説明します。
注意事項
emptyDir ボリュームは一時ストレージを提供します。ECI インスタンスが削除または再起動されると、emptyDir ボリューム内のデータは完全に削除されます。
設定 (API)
CreateContainerGroup API オペレーションを呼び出して ECI インスタンスを作成する際に、Volume 関連のパラメーターを使用してボリュームを指定し、Container.VolumeMount 関連のパラメーターを使用してボリュームをコンテナにマウントできます。関連するパラメーターを以下に示します。詳細については、「CreateContainerGroup」をご参照ください。
ボリュームの宣言
Volume 関連のパラメーターを使用してボリュームを指定する場合、まずボリュームのタイプと名前を指定する必要があります。次に、Volume.N.Type パラメーターの値に基づいて、他の Volume 関連のパラメーターを設定する必要があります。
|
パラメーター |
タイプ |
例 |
説明 |
|
Volume.N.Name |
String |
emptydir-demo |
ボリュームの名前。 |
|
Volume.N.Type |
String |
EmptyDirVolume |
ボリュームのタイプを指定します。emptyDir ボリュームを宣言するには、 |
|
Volume.N.EmptyDirVolume.Medium |
String |
Memory |
emptyDir ボリュームの記憶媒体。このパラメーターを空のままにすると、デフォルトでホストのファイルシステムが使用されます。有効な値は次のとおりです:
|
|
Volume.N.EmptyDirVolume.SizeLimit |
String |
256Mi |
emptyDir ボリュームのサイズ。値には |
Medium が Memory に設定されている emptyDir ボリュームの場合、SizeLimit を設定してインスタンスの shm サイズを変更できます。Medium と SizeLimit パラメーターを設定した後、emptyDir ボリュームをコンテナの /dev/shm ディレクトリにマウントする必要があります。
ボリュームのマウント
ボリュームを指定した後、VolumeMount 関連のパラメーターを使用して、ボリュームをコンテナにマウントできます。
パラメーター | タイプ | 例 | 説明 |
Container.N.VolumeMount.N.Name | String | test-volume | コンテナ N にマウントするボリューム N の名前。この値は 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 | ボリューム N のマウントプロパゲーション設定。マウントプロパゲーションを使用すると、1 つのコンテナにマウントされたボリュームを、同じ ECI インスタンス内の他のコンテナや、同じホスト上の他の ECI インスタンスと共有できます。有効な値は次のとおりです:
デフォルト値:None。 |
ボリュームは init コンテナにもマウントできます。必要なパラメーターは前の表のパラメーターと似ています。Container を InitContainer に変更するだけです。
設定 (コンソール)
Elastic Container Instance 購入ページで ECI インスタンスを作成する際に、[コンテナグループ設定] セクションでボリュームを指定し、[コンテナ設定] セクションでボリュームをコンテナにマウントできます。
ボリュームの宣言
-
コンテナーグループの設定 セクションで、高度な設定 を展開します。
-
ストレージ セクションの 一時ディレクトリ タブで、追加 をクリックします。
-
emptyDir ボリュームの名前を入力します。
たとえば、[名前] フィールドに
emptydir-demoと入力します。
ボリュームのマウント
-
コンテナー設定 セクションで、コンテナを選択し、その詳細設定を展開します。
-
ストレージ スイッチをオンにし、追加 をクリックします。
コンテナグループを設定する際に宣言したボリュームのみを追加できます。
名前が emptydir-demo でタイプが [一時ディレクトリ] のストレージを選択し、コンテナ内のマウントパスを
/dataに設定します。
複数のコンテナにボリュームをマウントする場合は、さらにコンテナを選択して上記の手順を繰り返します。
例
以下の例は、CreateContainerGroup オペレーションを呼び出して ECI インスタンスを作成し、emptyDir ボリュームをインスタンスにマウントするためのパラメーターを示しています。詳細については、「CreateContainerGroup」をご参照ください。
-
例 1:コンテナ間のデータ共有
ContainerGroupName=test-emptydir # Declare a volume Volume.1.Name=emptydir-demo Volume.1.Type=EmptyDirVolume # Mount the volume to container 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 # Mount the volume to container 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 ボリュームに追加したファイルは、もう一方のコンテナからアクセスできます。 -
例 2:インスタンスの shm サイズの変更
ContainerGroupName=test-emptydir # Declare a volume Volume.1.Name=emptydir-shm Volume.1.Type=EmptyDirVolume Volume.1.EmptyDirVolume.Medium=Memory Volume.1.EmptyDirVolume.SizeLimit=256Mi # Mount the volume to container 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に設定し、emptyDir ボリュームを/dev/shmディレクトリにマウントすることで、ECI インスタンスのshmサイズが 256 MiB に変更されます。