Amazon ECS에서 바인드 탑재 사용
바인드 탑재로 호스트의 파일 또는 디렉터리(예: Amazon EC2 인스턴스)가 컨테이너에 탑재됩니다. 바인드 탑재는 Fargate와 Amazon EC2 인스턴스 모두에서 호스팅되는 태스크에 지원됩니다. 바인드 탑재는 이를 사용하는 컨테이너의 수명 주기에 연결됩니다. 바인드 탑재를 사용하는 모든 컨테이너가 중지되면(예: 태스크가 중지될 때) 데이터가 제거됩니다. Amazon EC2 인스턴스에서 호스팅되는 작업의 경우 작업 정의에 host 및 sourcePath 값(선택 사항)을 지정하여 호스트 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/exportedRUN touch/var/log/exported/examplefileVOLUME ["/var/log/exported"]기본적으로 볼륨 권한은
0755로 설정되고 소유자는root로 설정됩니다. 이러한 권한은 Dockerfile에서 사용자 지정할 수 있습니다. 다음 예에서는 디렉터리의 소유자를node로 정의합니다.FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install -y shadow-utils && yum clean all RUN useraddnodeRUN mkdir -p /var/log/exported && chownnode:node/var/log/exported RUN touch /var/log/exported/examplefile USERnodeVOLUME ["/var/log/exported"] -
Amazon EC2 인스턴스에서 호스팅되는 태스크의 경우
host및sourcePath값이 지정되지 않으면 Docker 대몬이 바인드 탑재를 관리합니다. 컨테이너가 이 바인드 탑재를 참조하지 않으면, Amazon ECS 컨테이너 에이전트 태스크 정리 서비스가 결국 이를 삭제합니다. 기본적으로 이 작업은 컨테이너가 종료되고 3시간 후에 발생합니다. 하지만 이 기간을ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION에이전트 변수로 구성할 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성을 참조하세요. 컨테이너의 수명 주기가 끝나더라도 이 데이터를 유지하려면 바인드 탑재에sourcePath값을 지정합니다.