Amazon ECS에서 바인드 탑재 사용 - Amazon Elastic Container Service

Amazon ECS에서 바인드 탑재 사용

바인드 탑재로 호스트의 파일 또는 디렉터리(예: Amazon EC2 인스턴스)가 컨테이너에 탑재됩니다. 바인드 탑재는 Fargate와 Amazon EC2 인스턴스 모두에서 호스팅되는 태스크에 지원됩니다. 바인드 탑재는 이를 사용하는 컨테이너의 수명 주기에 연결됩니다. 바인드 탑재를 사용하는 모든 컨테이너가 중지되면(예: 태스크가 중지될 때) 데이터가 제거됩니다. Amazon EC2 인스턴스에서 호스팅되는 작업의 경우 작업 정의에 hostsourcePath 값(선택 사항)을 지정하여 호스트 Amazon EC2 인스턴스의 수명 주기에 데이터를 연결할 수 있습니다. 자세한 정보는 Docker 설명서의 바인드 탑재 사용을 참조하세요.

바인드 탑재의 일반 사용 사례는 다음과 같습니다.

  • 하나 이상의 컨테이너에 마운트할 빈 데이터 볼륨을 제공합니다.

  • 하나 이상의 컨테이너에 호스트 데이터 볼륨을 마운트합니다.

  • 동일한 태스크의 다른 컨테이너에 소스 컨테이너의 데이터 볼륨을 공유합니다.

  • Dockerfile의 경로와 콘텐츠를 하나 이상의 컨테이너에 노출합니다.

바인드 탑재 사용 시 고려 사항

바인드 탑재를 사용할 때는 다음 사항을 고려해야 합니다.

  • 플랫폼 버전 1.4.0 이상(Linux) 또는 1.0.0 이상(Windows)을 사용하여 AWS Fargate에 호스팅되는 작업의 경우 기본적으로 바인드 탑재를 위해 최소 20GiB 이상의 임시 스토리지를 수신합니다. 임시 스토리지의 총량은 작업 정의에 ephemeralStorage 파라미터를 지정하여 최대 200GiB까지 늘릴 수 있습니다.

  • 태스크가 실행될 때 Dockerfile에서 데이터 볼륨으로 파일을 노출하기 위해 Amazon ECS 데이터 영역은 VOLUME 명령을 찾습니다. VOLUME 명령에 지정된 절대 경로가 태스크 정의에 지정된 containerPath와 동일한 경우 VOLUME 명령 경로의 데이터가 데이터 볼륨에 복사됩니다. 다음 Dockerfile 예제에서 /var/log/exported 디렉터리에 있는 examplefile이라는 파일이 호스트에 기록된 다음 컨테이너 내부에 마운트됩니다.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN mkdir -p /var/log/exported RUN touch /var/log/exported/examplefile VOLUME ["/var/log/exported"]

    기본적으로 볼륨 권한은 0755로 설정되고 소유자는 root로 설정됩니다. 이러한 권한은 Dockerfile에서 사용자 지정할 수 있습니다. 다음 예에서는 디렉터리의 소유자를 node로 정의합니다.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install -y shadow-utils && yum clean all RUN useradd node RUN mkdir -p /var/log/exported && chown node:node /var/log/exported RUN touch /var/log/exported/examplefile USER node VOLUME ["/var/log/exported"]
  • Amazon EC2 인스턴스에서 호스팅되는 태스크의 경우 hostsourcePath 값이 지정되지 않으면 Docker 대몬이 바인드 탑재를 관리합니다. 컨테이너가 이 바인드 탑재를 참조하지 않으면, Amazon ECS 컨테이너 에이전트 태스크 정리 서비스가 결국 이를 삭제합니다. 기본적으로 이 작업은 컨테이너가 종료되고 3시간 후에 발생합니다. 하지만 이 기간을 ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 에이전트 변수로 구성할 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성을 참조하세요. 컨테이너의 수명 주기가 끝나더라도 이 데이터를 유지하려면 바인드 탑재에 sourcePath 값을 지정합니다.