[AWS Cloud Clubs] 2. Container와 Docker
1. Container와 Docker
Container란?
- 컨테이너: 코드와 그에 필요한 모든 종속성을 패키징하여 응용 프로그램이 한 컴퓨팅 환경에서 빠르고 신뢰성 있게 다른 환경으로 실행되도록 하는 표준 소프트웨어 단위
Docker란?
- Docker: 애플리케이션을 개발, 출시, 실행하는 데 사용하는 개방형 플랫폼
- Docker image: 애플리케이션을 실행하는데 필요한 모든 것(라이브러리, 코드, 환경 변수 등등)을 포장한 템플릿으로, 이미지를 사용해서 실제로 실행되는 컨테이너를 만들 수 있음
- Docker container: DockerImage를 바탕으로 실제로 실행되는 애플리케이션을 의미
2. Amazon Elastic Container Registry(ECR)
Amazon Elastic Container Registry(ECR)란?
- ECR: 완전관리형 Docker 컨테이너 레지스트리
- 이미지 저장: 도커 이미지, Open Container Initiative(OCI) 이미지 및 OCI 호환 아티팩트를 리포지토리에 저장 가능
- 정책 관리: 리포지토리 정책을 사용하면 리포지토리 및 리포지토리 내 콘텐츠에 대한 액세스를 제어
- 이미지 사용: Amazon ECS 태스크 정의 및 Amazon EKS 포드 사양에서 이미지 사용 가능
3. Kubernetes
Kubernetes란?
- Kubernetes: 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장 가능한 컨테이너 오케스트레이션 서비스
- spec: 원하는 상태를 명시한 것
- status: 현재 상태를 나타내는 것
- 스펙에 명시된 원하는 상태와 현 상태를 일치시키려고 함 (원하는 상태로 조정 -> 현재 상태 확인 -> 쿠버네티스 컨트롤 플레인의 조정)
Amazon Elastic Kubernetes Service(EKS)
- EKS: 관리형 쿠버네티스 서비스
- 서비스 통합: Amazon EKS는 다른 AWS 서비스와 통합되어, 컨테이너화된 애플리케이션을 배포하고 관리하기 위한 포괄적인 플랫폼을 제공 가능
- 규모 조정: Amazon EKS는 CPU 또는 사용자 지정 지표를 기반으로 수평 Pod 자동 규모 조정, 그리고 전체 워크로드 수요를 기반으로 클러스터 자동 규모 조정 가능
쿠버네티스 아키텍처
- workder node인 컨테이너들과 master node인 컨트롤 플레인이 존재
- 컨테이너 그 자체를 다루지 않고, 서로 밀접하게 연관된 컨테이너들의 집합인 pod를 관리함
- 배포: 디플로이먼트는 실행 중인 포드의 개수가 사용자가 명시한 포드 개수와 동일하게 만드는 선언적 방식으로, 어떤 이유로든 포드가 중지되면 재시작을 담당하여 처리함
- 서비스: pod를 위한 영구적인 엔드포인트로, ClusterIP, NodePort,
LoadBalancer, ExternalName 등의 형식으로 내부/외부 IP를 제공함