

# Amazon ECS용 Docker 볼륨 예제
<a name="docker-volume-examples"></a>

다음 예제에서는 컨테이너에 임시 스토리지를 제공하는 방법과 여러 컨테이너에 공유 볼륨을 제공하는 방법, 컨테이너에 NFS 영구 스토리지를 제공하는 방법을 보여줍니다.

**Docker 볼륨을 사용하여 컨테이너에 임시구 스토리지를 제공하는 방법**

이 예에서 컨테이너는 태스크가 완료된 후 폐기되는 빈 데이터 볼륨을 사용합니다. 사용 사례 중 한 예로, 태스크 도중 Scratch 파일 스토리지 위치에 액세스해야 하는 컨테이너가 있을 수 있습니다. Docker 볼륨을 사용하면 이러한 태스크를 수행할 수 있습니다.

1. 태스크 정의 `volumes` 섹션에서 `name` 및 `DockerVolumeConfiguration` 값을 사용하여 데이터 볼륨을 정의합니다. 이 예제에서는 태스크가 중단된 후 볼륨이 삭제되도록 범위를 `task`로 지정하고 기본 제공 `local` 드라이버를 사용합니다.

   ```
   "volumes": [
       {
           "name": "scratch",
           "dockerVolumeConfiguration" : {
               "scope": "task",
               "driver": "local",
               "labels": {
                   "scratch": "space"
               }
           }
       }
   ]
   ```

1. `containerDefinitions` 섹션에서 정의된 볼륨 이름과 컨테이너에서 볼륨을 탑재할 `mountPoints` 값을 참조하는 `containerPath` 값을 사용하여 컨테이너를 정의합니다.

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

**Docker 볼륨을 사용하여 여러 컨테이너에 영구 스토리지 제공**

이번 예제에서는 다수의 컨테이너에서 공유 볼륨을 사용하고, 이 볼륨을 사용하는 단일 태스크가 중단된 후에도 볼륨을 유지하려고 합니다. 내장 `local` 드라이버를 사용 중입니다. 또한 볼륨이 컨테이너 인스턴스의 수명 주기에 계속해서 연결되도록 합니다.

1. 태스크 정의 `volumes` 섹션에서 `name` 및 `DockerVolumeConfiguration` 값을 사용하여 데이터 볼륨을 정의합니다. 이 예제에서는 `shared` 범위를 지정하여 볼륨이 유지되도록 자동 프로비저닝을 `true`로 설정합니다. 이는 사용하기 위해 볼륨이 생성되도록 하기 위함입니다. 그런 다음 내장 `local` 드라이버도 사용합니다.

   ```
   "volumes": [
       {
           "name": "database",
           "dockerVolumeConfiguration" : {
               "scope": "shared",
               "autoprovision": true,
               "driver": "local",
               "labels": {
                   "database": "database_name"
               }
           }
       }
   ]
   ```

1. `containerDefinitions` 섹션에서 정의된 볼륨 이름과 컨테이너에서 볼륨을 탑재할 `mountPoints` 값을 참조하는 `containerPath` 값을 사용하여 컨테이너를 정의합니다.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       },
       {
         "name": "container-2",
         "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       }
     ]
   ```

**도커 볼륨을 사용하여 컨테이너에 NFS 영구 스토리지 제공**

 이 예에서 컨테이너는 작업이 시작될 때 자동으로 탑재되고 작업이 중지될 때 탑재 해제되는 NFS 데이터 볼륨을 사용합니다. 도커 내장`local` 드라이버가 사용됩니다. 사용 사례 중 한 예로, ECS Anywhere 작업에서 해당 스토리지에 액세스해야 하는 경우가 있습니다. NFS 드라이버 옵션이 있는 도커 볼륨을 사용하면 이러한 작업을 수행할 수 있습니다.

1. 태스크 정의 `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"
                  }
              }
          }
      ]
   ```

1. `containerDefinitions` 섹션에서 정의된 볼륨 이름과 컨테이너에서 볼륨을 탑재할 `mountPoints` 값을 참조하는 `containerPath` 값을 사용하여 컨테이너를 정의합니다.

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