Amazon ECS の Docker ボリュームの例 - Amazon Elastic Container Service

Amazon ECS の Docker ボリュームの例

次の例は、コンテナにエフェメラルストレージを提供する方法、複数のコンテナに共有ボリュームを提供する方法、およびコンテナに NFS 永続ストレージを提供する方法を示しています。

Docker ボリュームを使用してコンテナの一時ストレージを提供する

この例では、コンテナは空のデータボリュームを使用しており、これはタスクが完了した後に破棄されます。ユースケースの一例としては、タスクの実行中に一部のスクラッチファイルストレージにアクセスする必要のあるコンテナが考えられます。このタスクは、Docker ボリュームを使用して行うことができます。

  1. タスク定義の volumes セクションで、name および DockerVolumeConfiguration 値を使用して、データボリュームを定義します。この例では、タスクが停止した後にボリュームが削除されるように、範囲に task を指定して、組み込みの local ドライバーを使用します。

    "volumes": [ { "name": "scratch", "dockerVolumeConfiguration" : { "scope": "task", "driver": "local", "labels": { "scratch": "space" } } } ]
  2. containerDefinitions セクションで、定義したボリュームの名前を参照する mountPoints 値と、コンテナにボリュームをマウントするための containerPath 値を使用して、コンテナを定義します。

    "containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "scratch", "containerPath": "/var/scratch" } ] } ]
Docker ボリュームを使用して複数のコンテナの永続的ストレージを提供するには

この例では、複数のコンテナで使用する共有ボリュームが必要で、また、使用するタスクの内の 1 つが停止した後も、このボリュームを維持する必要があります。組み込みの local ドライバーは使用中です。このためボリュームは、コンテナインスタンスのライフサイクルに紐付けられたままです。

  1. タスク定義の volumes セクションで、name および DockerVolumeConfiguration 値を使用して、データボリュームを定義します。この例では、shared スコープをボリュームが維持されるように指定し、自動プロビジョニングを true に設定します。これは、使用するためのボリュームが作成されるようにするためです。また、組み込みの local ドライバーも使用します。

    "volumes": [ { "name": "database", "dockerVolumeConfiguration" : { "scope": "shared", "autoprovision": true, "driver": "local", "labels": { "database": "database_name" } } } ]
  2. 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 ボリュームを使用して実現できます。

  1. タスク定義の volumes セクションで、name および DockerVolumeConfiguration 値を使用して、データボリュームを定義します。この例では、タスクが停止した後にボリュームがアンマウントされるように task のスコープを指定してください。local ドライバーを使用し、typedevice、および 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" } } } ]
  2. containerDefinitions セクションで、定義したボリュームの名前を参照する mountPoints 値と、コンテナにボリュームをマウントするための containerPath 値を使用して、コンテナを定義します。

    "containerDefinitions": [ { "name": "container-1", "mountPoints": [ { "sourceVolume": "NFS", "containerPath": "/var/nfsmount" } ] } ]