Container
2025. 10. 14. 18:28ㆍCERTIFICATES/AWS DEA-C01
도커란?
- Docker는 애플리케이션 배포를 위한 소프트웨어 개발 플랫폼임
- 애플리케이션은 컨테이너 형태로 패키징되어 어떤 운영체제에서도 실행 가능함
- 애플리케이션은 실행 환경에 상관없이 동일하게 동작함
- 어떤 머신에서도 실행 가능함
- 호환성 문제 없음
- 예측 가능한 동작 보장
- 작업량 감소
- 유지보수 및 배포 용이함
- 어떤 언어, 운영체제, 기술에도 호환됨
- 사용 사례: 마이크로서비스 아키텍처, 온프레미스 애플리케이션을 AWS 클라우드로 리프트 앤 시프트하는 경우 등
Docker on an OS
- Docker는 호스트 운영체제 위에서 실행됨
- 컨테이너는 호스트 OS의 커널을 공유하지만, 각 컨테이너는 독립된 사용자 공간(user space)에서 동작함
- 각 컨테이너는 자체적인 파일 시스템, 프로세스, 네트워크 스택을 가짐
- 가상 머신(VM)과 달리 별도의 게스트 OS가 필요하지 않음
- 이로 인해 실행 속도가 빠르고 리소스 사용이 효율적임
- Docker는 Linux, macOS, Windows 등 다양한 운영체제에서 동작 가능함

도커 이미지 저장
- Docker 이미지는 Docker 리포지토리에 저장됨
- Docker Hub (https://hub.docker.com)
- 공개 리포지토리임
- Ubuntu, MySQL 등 다양한 기술 스택이나 운영체제용 베이스 이미지를 찾을 수 있음
- Amazon ECR (Amazon Elastic Container Registry)
- 비공개 리포지토리
- 공개 리포지토리(Amazon ECR Public Gallery, https://gallery.ecr.aws)도 제공함
도커 vs 가상머신
- Docker는 일종의 가상화 기술이지만, 완전한 가상화 기술은 아님
- 리소스가 호스트와 공유되므로 하나의 서버에서 여러 개의 컨테이너를 실행할 수 있음

도커 시작하기

AWS에서 Docker 컨테이너 관리하기
- Amazon Elastic Container Service (ECS)
- AWS에서 제공하는 자체 컨테이너 관리 플랫폼임
- Amazon Elastic Kubernetes Service (EKS)
- 오픈 소스 쿠버네티스(Kubernetes)를 AWS에서 완전관리형으로 제공함
- AWS Fargate
- AWS의 서버리스 컨테이너 실행 플랫폼임
- ECS 및 EKS와 함께 동작함
- Amazon ECR
- 컨테이너 이미지를 저장하는 서비스임
Amazon ECS - EC2 Launch Type
- ECS = Elastic Container Service
- AWS에서 Docker 컨테이너를 실행한다는 것은 ECS 클러스터에서 ECS 태스크를 실행한다는 의미임
- EC2 Launch Type을 사용하는 경우, 사용자가 EC2 인스턴스를 프로비저닝하고 인프라를 직접 관리해야 함
- 각 EC2 인스턴스는 ECS 클러스터에 등록되기 위해 ECS 에이전트를 실행해야 함
- AWS는 컨테이너의 시작 및 중지 작업을 자동으로 관리함

Amazon ECS – Fargate Launch Type
- AWS에서 Docker 컨테이너를 실행함
- 인프라를 직접 프로비저닝할 필요가 없음 (EC2 인스턴스를 관리하지 않아도 됨)
- 완전한 서버리스 방식임
- 사용자는 단지 태스크 정의만 생성하면 됨
- AWS가 지정한 CPU와 RAM 요구사항에 따라 ECS 태스크를 자동으로 실행함
- 스케일링이 필요하면 태스크 개수만 늘리면 됨. 단순함 – EC2 인스턴스 관리가 더 이상 필요하지 않음

Amazon ECS - IAM Roles for ECS
- EC2 인스턴스 프로파일 (EC2 Launch Type 전용)
- ECS 에이전트에서 사용됨
- ECS 서비스에 API 호출을 수행함
- 컨테이너 로그를 CloudWatch Logs로 전송함
- ECR에서 Docker 이미지를 가져옴
- Secrets Manager나 SSM Parameter Store에 있는 민감한 데이터를 참조함
- ECS 태스크 역할 (ECS Task Role)
- 각 태스크가 고유한 IAM 역할을 가질 수 있도록 함
- 실행 중인 ECS 서비스마다 다른 역할을 지정할 수 있음
- 태스크 정의 내에서 역할을 정의함

Amazon ECS - Load Balancer 통합
- Application Load Balancer(ALB)는 대부분의 사용 사례에서 지원되며 가장 일반적으로 사용됨
- Network Load Balancer(NLB)는 고성능 또는 고처리량이 필요한 경우나 AWS PrivateLink와 함께 사용할 때 권장됨
- Classic Load Balancer(CLB)도 지원되지만, 고급 기능이 없고 Fargate와 호환되지 않으므로 권장되지 않음

Amazon ECS – Data Volumes (EFS)
- EFS 파일 시스템을 ECS 태스크에 마운트할 수 있음
- EC2 Launch Type과 Fargate Launch Type 모두에서 동작함
- 어떤 가용 영역(AZ)에서 실행 중인 태스크라도 동일한 EFS 파일 시스템의 데이터를 공유함
- Fargate + EFS 조합은 완전한 서버리스 환경을 구성함
- 사용 사례: 컨테이너용 다중 AZ 간 지속적 공유 스토리지가 필요한 경우
- 참고: Amazon S3는 파일 시스템으로 마운트할 수 없음

Amazon ECR
- ECR = Elastic Container Registry
- AWS에서 Docker 이미지를 저장하고 관리함
- 비공개 및 공개 리포지토리를 모두 지원함 (Amazon ECR Public Gallery: https://gallery.ecr.aws)
- Amazon S3를 기반으로 하며 ECS와 완전히 통합되어 있음
- IAM을 통해 접근이 제어됨 (권한 오류 발생 시 정책 설정 필요)
- 이미지 취약점 스캔, 버전 관리, 이미지 태그, 이미지 수명 주기 관리 등의 기능을 지원함

Amazon EKS 개요
- Amazon EKS = Amazon Elastic Kubernetes Service
- AWS에서 관리형 Kubernetes 클러스터를 실행하기 위한 서비스
- Kubernetes는 컨테이너화된(일반적으로 Docker 기반) 애플리케이션의 자동 배포, 스케일링, 관리 기능을 제공하는 오픈 소스 시스템임
- ECS와 유사한 목적을 가지지만, 서로 다른 API를 사용함
- 워커 노드를 직접 배포하려면 EC2를, 서버리스 컨테이너를 배포하려면 Fargate를 사용할 수 있음
- 사용 사례: 기업이 이미 온프레미스나 다른 클라우드 환경에서 Kubernetes를 사용 중이며, AWS로 마이그레이션하려는 경우
- Kubernetes는 클라우드에 종속되지 않으며(Azure, GCP 등에서도 사용 가능함)
- 여러 리전에 걸쳐 사용할 경우, 리전별로 하나의 EKS 클러스터를 배포해야 함
- 로그 및 메트릭 수집은 CloudWatch Container Insights를 통해 수행함
Amazon EKS 다이어그램

Amazon EKS – Node Types
Managed Node Groups
- EKS가 노드(EC2 인스턴스)를 자동으로 생성 및 관리함
- 노드는 EKS가 관리하는 Auto Scaling Group(ASG)의 일부로 구성됨
- 온디맨드 인스턴스와 스팟 인스턴스 모두 지원함
Self-Managed Nodes
- 사용자가 직접 노드를 생성하고 EKS 클러스터에 등록한 후 ASG로 관리함
- Amazon EKS Optimized AMI(사전 구성된 AMI)를 사용할 수 있음
- 온디맨드 인스턴스와 스팟 인스턴스 모두 지원함
AWS Fargate
- 노드 유지보수가 필요하지 않음
- 사용자가 직접 노드를 관리하지 않아도 됨
Amazon EKS – Data Volumes
- EKS 클러스터에서 StorageClass 매니페스트를 지정해야 함
- 컨테이너 스토리지 인터페이스(Container Storage Interface, CSI) 규격을 준수하는 드라이버를 사용함
- 다음 스토리지 서비스를 지원함
- Amazon EBS
- Amazon EFS (Fargate와 함께 동작함)
- Amazon FSx for Lustre
- Amazon FSx for NetApp ONTAP
'CERTIFICATES > AWS DEA-C01' 카테고리의 다른 글
| Application Integration (0) | 2025.10.21 |
|---|---|
| Analytics (0) | 2025.10.21 |
| Compute (0) | 2025.10.14 |
| Migration and Transfer (0) | 2025.10.14 |
| Database (0) | 2025.10.14 |