Container

2025. 10. 14. 18:28CERTIFICATES/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)

도커 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