Amazon ECS の Docker ボリュームの例
次の例は、コンテナにエフェメラルストレージを提供する方法、複数のコンテナに共有ボリュームを提供する方法、およびコンテナに NFS 永続ストレージを提供する方法を示しています。
Docker ボリュームを使用してコンテナの一時ストレージを提供する
この例では、コンテナは空のデータボリュームを使用しており、これはタスクが完了した後に破棄されます。ユースケースの一例としては、タスクの実行中に一部のスクラッチファイルストレージにアクセスする必要のあるコンテナが考えられます。このタスクは、Docker ボリュームを使用して行うことができます。
-
タスク定義の
volumesセクションで、nameおよびDockerVolumeConfiguration値を使用して、データボリュームを定義します。この例では、タスクが停止した後にボリュームが削除されるように、範囲にtaskを指定して、組み込みのlocalドライバーを使用します。"volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "labels": { "scratch": "space" } } } ] -
containerDefinitionsセクションで、定義したボリュームの名前を参照するmountPoints値と、コンテナにボリュームをマウントするためのcontainerPath値を使用して、コンテナを定義します。"containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "scratch", "containerPath": "/var/scratch" } ] } ]
Docker ボリュームを使用して複数のコンテナの永続的ストレージを提供するには
この例では、複数のコンテナで使用する共有ボリュームが必要で、また、使用するタスクの内の 1 つが停止した後も、このボリュームを維持する必要があります。組み込みの local ドライバーは使用中です。このためボリュームは、コンテナインスタンスのライフサイクルに紐付けられたままです。
-
タスク定義の
volumesセクションで、nameおよびDockerVolumeConfiguration値を使用して、データボリュームを定義します。この例では、sharedスコープをボリュームが維持されるように指定し、自動プロビジョニングをtrueに設定します。これは、使用するためのボリュームが作成されるようにするためです。また、組み込みのlocalドライバーも使用します。"volumes": [ { "name": "database", "dockerVolumeConfiguration" : { "scope": "shared", "autoprovision": true, "driver": "local", "labels": { "database": "database_name" } } } ] -
containerDefinitionsセクションで、定義したボリュームの名前を参照するmountPoints値と、コンテナにボリュームをマウントするためのcontainerPath値を使用して、コンテナを定義します。"containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "database", "containerPath": "/var/database" } ] }, { "name": "container-2", "mountPoints": [ { "sourceVolume": "database", "containerPath": "/var/database" } ] } ]
Docker ボリュームを使用してコンテナの NFS 永続的ストレージを提供する
この例では、コンテナはタスクの開始時に自動的にマウントされ、タスクの停止時にアンマウントされる NFS データボリュームを使用します。これは Docker ビルトイン local ドライバーを使用します。ユースケースの一例としては、ローカル NFS ストレージがあり、ECS Anywhere タスクからアクセスする必要がある場合があります。これは、NFS ドライバーオプションの Docker ボリュームを使用して実現できます。
-
タスク定義の
volumesセクションで、nameおよびDockerVolumeConfiguration値を使用して、データボリュームを定義します。この例では、タスクが停止した後にボリュームがアンマウントされるようにtaskのスコープを指定してください。localドライバーを使用し、type、device、およびoオプションを適宜使用してdriverOptsを設定します。NFS_SERVERは NFS サーバーエンドポイントに置き換えます。"volumes": [ { "name": "NFS", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "driverOpts": { "type": "nfs", "device": "$NFS_SERVER:/mnt/nfs", "o": "addr=$NFS_SERVER" } } } ] -
containerDefinitionsセクションで、定義したボリュームの名前を参照するmountPoints値と、コンテナにボリュームをマウントするためのcontainerPath値を使用して、コンテナを定義します。"containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "NFS", "containerPath": "/var/nfsmount" } ] } ]