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
" } ] } ]