- Amazon EC2 Container Service(Amazon ECS)는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 클러스터에서 손쉽게 Docker 컨테이너를 실행, 중지 및 관리할 수 있게 해주는 확장성 및 속도가 뛰어난 컨테이너 관리 서비스입니다. Amazon ECS에서는 간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을 시작 및 중지할 수 있고 중앙 집중식 서비스를 사용하여 클러스터 상태를 확인할 수 있으며 다수의 친숙한 Amazon EC2 기능에 액세스할 수 있습니다.
- Amazon ECS를 사용하여 리소스 요구 사항, 격리 정책 및 가용성 요구 사항을 기반으로 클러스터에서의 컨테이너 배치를 예약할 수 있습니다. Amazon ECS를 사용하면 사용자가 자체 클러스터 관리 및 구성 관리 시스템을 운영하거나 관리 인프라 조정에 신경 쓸 필요가 없습니다.
- Amazon ECS는 일관된 배포 및 빌드 환경을 구축하고, 배치 및 ETL(Extract-Transform-Load) 워크로드를 관리 및 조장하고, 마이크로서비스 모델에서 정교한 애플리케이션 아키텍처를 빌드하는 데 사용할 수 있습니다.
Amazon EC2 Container Service(ECS)
뉴스레터 가입
클라우드 관련 최신 소식을 업데이트 받으실 수 있습니다.
Amazon EC2 Container Service의 기능
Amazon ECS는 특정 리전 내의 여러 가용 영역에 걸쳐 고가용성 방식으로 애플리케이션 컨테이너를 실행하는 과정을 간소화하는 리전 서비스입니다. 새 또는 기존의 VPC에서 Amazon ECS 클러스터를 생성할 수 있습니다. 클러스터를 실행한 후 클러스터 사이에서 실행할 Docker 컨테이너 이미지를 지정하는 작업 정의 및 서비스를 정의할 수 있습니다. 컨테이너 이미지는 컨테이너 레지스트리에서 저장 및 pull됩니다. 레지스트리는 AWS 인프라 내부에 존재할 수도 외부에 위치할 수도 있습니다.
용어 정의
Amazon ECS는 다음과 같은 단위들로 이루어져 있습니다.
- Cluster (클러스터)
Amazon ECS 클러스터는 작업 요청을 실행할 수있는 하나 이상의 컨테이너 인스턴스를 지역 그룹으로 묶은 것입니다. 각 계정은 Amazon ECS 서비스를 처음 사용할 때 기본 클러스터를받습니다. 클러스터에는 둘 이상의 Amazon EC2 인스턴스 유형이 포함될 수 있습니다. - Container Instance (컨테이너 인스턴스)
클러스터에 등록된 Amazon ECS 에이전트가 실행되는 EC2 인스턴스 - Task Definition (Task 정의)
작업 정의는 작업에 포함되는 컨테이너 수, 사용 리소스, 연결 방법 및 사용할 호스트 포트와 같은 응용 프로그램의 컨테이너 정보를 지정합니다. - Task
Task 정의를 이용해 생성된 인스턴스, 컨테이너 인스턴스에서 실행 중 - Container (컨테이너)
task의 일부로 생성된 리눅스 컨테이너
Amazon EC2 Container Service 구성 방법
AWS Management Console → Login → Compute → EC2 Container Service
Cluster
EC2 Container Service → Cluster
EC2 Container Service → Cluster → Step 1
EC2 Container Service → Cluster → Step 2 → Cluster name
예)ecstest
EC2 Container Service → Cluster → Step 2
EC2 Container Service → Cluster → View
EC2 Dashboard → Instances → ECS용 EC2 Instance 생성 확인
Task Definitions
EC2 Container Service → Task Definitions → Create
Task Definitions > Name
EC2 Container Service → Task Definitions → Create
Task Definitions > Role
EC2 Container Service → Task Definitions → Create
Task Definitions > Network Mode
Network Mode 설명
- 기본 Docker 네트워크 모드는 bridge 입니다.
- 네트워크 모드가 none으로 설정될 경우 컨테이너 정의에서 포트 매핑을 지정할 수 없고 작업의 컨테이너가 외부 네트워크와 연결되지 않습니다.
- host 네트워크 모드는 bridge 모드에서 제공하는 가상화된 네트워크 스택 대신 호스트 네트워크 스택을 사용하기 때문에 가장 높은 네트워킹 성능을 제공하지만, 노출된 컨테이너 포트가 해당 호스트 포트에 직접 매핑되므로 포트 매핑을 사용하는 경우 동적 호스트 포트 매핑을 활용할 수 없거나 단일 컨테이너 인스턴스에서 동일한 작업의 다중 인스턴스화를 실행할 수 없습니다.
Task Definitions > Add Container
- Task Memory (MiB): 128MB
- Task CPU (unit): 1024 Unit
Task Definitions > Add Container: Standard
Standard
- Container name: ecstest
- Image: ECR의 Registry URL
Task Definitions > Add Container: Advanced container
- 컨테이너에 예약 할 cpu 단위의 수. 컨테이너 인스턴스는 모든 CPU 코어에 대해 1,024 cpu 유닛을 갖습니다.
- 컨테이너에 전달되는 Docker ENTRYPOINT입니다. 자세한 내용은 Docker 실행 참조를 참조하십시오.
- 컨테이너에 전달되는 Docker CMD입니다. 자세한 내용은 Docker 실행 참조를 참조하십시오.
- 컨테이너 내의 바이너리를 실행하기 위한 작업 디렉토리.
- 컨테이너에 전달할 환경 변수입니다.
- 이 매개 변수가 true이면 컨테이너 내에서 네트워킹이 비활성화 됩니다.
- link 매개 변수를 사용하면 컨테이너가 name 매개 변수를 사용하여 포트 매핑없이 서로 통신 할 수 있습니다.
- 컨테이너에 사용할 호스트 이름입니다.
- 컨테이너에 제공되는 DNS 서버 목록입니다.
- 컨테이너에 표시되는 DNS 검색 도메인의 목록입니다.
- 컨테이너의 / etc / hosts 파일에 추가 할 호스트 이름 및 IP 주소 매핑 목록입니다.
- 이 매개 변수가 true이면 컨테이너에 루트 파일 시스템에 대한 읽기 전용 액세스 권한이 부여됩니다.
- 컨테이너에있는 데이터 볼륨의 마운트 지점
- 다른 컨테이너에서 데이터 볼륨을 마운트 하십시오.
- 특정 컨테이너에 대한 로그 구성입니다.
- 이 매개 변수가 true이면 컨테이너에 호스트 컨테이너 인스턴스에 대한 상승된 권한이 부여됩니다. (루트 사용자와 유사)
- 컨테이너 내부에서 사용할 사용자 이름입니다.
- SELinux 및 AppArmor 다중 레벨 보안 시스템에 대한 사용자 정의 레이블을 제공하는 문자열 목록
- 컨테이너에 설정할 ulimits 목록입니다.
- 컨테이너에 추가할 레이블의 키 / 값 맵입니다.
이 매개 변수가 true이면 컨테이너에 호스트 컨테이너 인스턴스에 대한 상승된 권한이 부여됩니다. (루트 사용자와 유사)
녹색 Task Definition Successfully 화면이 나오면 정상
아래는 Task Definition 설정 내용
Amazon EC2 Container Repositories (ECR Repositoreis) 소개
Amazon ECR Repositories
- Amazon ECR는 리포지토리를 생성, 모니터링 및 삭제하고, 리포지토리에 액세스할 수 있는 사용자를 제어하는 리포지토리 권한을 설정하는 API 작업을 제공합니다. Amazon ECS 콘솔의 리포지토리 섹션에서 동일한 작업을 수행할 수 있습니다. Amazon ECR는 또한 Docker CLI와 통합되어 개발 환경의 이미지를 리포지토리로 푸시하고 가져올 수 있습니다.
Repositories Concept
- 기본적으로, 사용자의 계정은 자신의 기본 레지스트리에 있는 리포지토리에 대한 읽기 및 쓰기 액세스 권한을 갖습니다(aws_account_id.dkr.ecr.region.amazonaws.com). 그러나, IAM 사용자는 Amazon ECR API를 호출할 수 있고 리포지토리로부터 이미지를 푸시하거나 가져올 수 있는 권한이 필요합니다. Amazon ECR는 여러 가지 관리형 정책을 제공하여 다양한 수준에서 사용자 액세스를 제어하도록 해줍니다. 자세한 내용은 Amazon ECR 관리형 정책 섹션을 참조하십시오.
- 리포지토리는 IAM 사용자 액세스 정책 및 리포지토리 정책 모두를 사용하여 제어할 수 있습니다. 자세한 내용은 Amazon ECR 리포지토리 정책 단원을 참조하십시오.
- 리포지토리 이름은 네임스페이스를 지원할 수 있으며 이를 통해 유사한 리포지토리를 그룹화할 수 있습니다. 예를 들어 동일한 레지스트리를 사용하는 팀이 여러 개 있는 경우, 팀 A는 team-a 네임스페이스를 사용하는 반면 팀 B는 team-b 네임스페이스를 사용합니다. 각 팀에는 web-app이라는 고유의 이미지가 있을 수 있지만, 각각 팀 네임스페이스와 함께 시작하므로, 두 이미지를 간섭 없이 동시에 사용할 수 있습니다. 팀 A의 이미지는 team-a/web-app이라고 하며, 팀 B의 이미지는 team-b/web-app이라고 합니다.
AWS에 대해 더 알고 싶으세요?
BespinGlobal의 AWS 전문 엔지니어가 답해드립니다.