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/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 && chownnode
:node
/var/log/exported RUN touch /var/log/exported/examplefile USERnode
VOLUME ["/var/log/exported"] -
Amazon EC2 인스턴스에서 호스팅되는 태스크의 경우
host
및sourcePath
값이 지정되지 않으면 Docker 대몬이 바인드 탑재를 관리합니다. 컨테이너가 이 바인드 탑재를 참조하지 않으면, Amazon ECS 컨테이너 에이전트 태스크 정리 서비스가 결국 이를 삭제합니다. 기본적으로 이 작업은 컨테이너가 종료되고 3시간 후에 발생합니다. 하지만 이 기간을ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
에이전트 변수로 구성할 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성을 참조하세요. 컨테이너의 수명 주기가 끝나더라도 이 데이터를 유지하려면 바인드 탑재에sourcePath
값을 지정합니다.