Amazon ECS용 Docker 볼륨 예제 - Amazon Elastic Container Service

Amazon ECS용 Docker 볼륨 예제

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

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

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

  1. 태스크 정의 volumes 섹션에서 nameDockerVolumeConfiguration 값을 사용하여 데이터 볼륨을 정의합니다. 이 예제에서는 태스크가 중단된 후 볼륨이 삭제되도록 범위를 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 볼륨을 사용하여 여러 컨테이너에 영구 스토리지 제공

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

  1. 태스크 정의 volumes 섹션에서 nameDockerVolumeConfiguration 값을 사용하여 데이터 볼륨을 정의합니다. 이 예제에서는 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" } ] } ]
도커 볼륨을 사용하여 컨테이너에 NFS 영구 스토리지 제공

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

  1. 태스크 정의 volumes 섹션에서 nameDockerVolumeConfiguration 값을 사용하여 데이터 볼륨을 정의합니다. 이 예제에서는 작업이 중지된 후 볼륨이 탑재 해제되도록 task 범위를 지정합니다. local 드라이버를 사용하고 그에 따라 type, deviceo 옵션으로 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" } ] } ]