Learning
토픽 17 / 107·가상화와 컨테이너

컨테이너 (Container)

컨테이너 (Container)

애플리케이션과 그 실행에 필요한 모든 종속성(라이브러리, 바이너리, 설정 파일)을 하나의 패키지로 묶어 격리된 환경에서 실행하는 경량 가상화 기술로, 호스트 OS의 커널을 공유하여 VM 대비 빠른 시작과 적은 리소스 사용이 특징이며 OCI 표준을 따름

구성요소: 컨테이너 이미지(앱과 종속성을 포함한 불변 패키지/레이어 구조), 컨테이너(이미지의 실행 인스턴스/프로세스), 컨테이너 런타임(컨테이너 실행 담당/containerd/CRI-O), 컨테이너 엔진(사용자 인터페이스 제공/Docker Engine), 레지스트리(이미지 저장/배포/Docker Hub/ECR)

격리 기술 Linux: Namespace(프로세스/네트워크/파일시스템 등 격리), cgroups(CPU/메모리 등 리소스 제한), Union Filesystem(레이어 기반 파일시스템/OverlayFS), seccomp(시스템 콜 필터링), AppArmor/SELinux(강제 접근 제어 MAC)

컨테이너 런타임: containerd(산업 표준/CNCF/Kubernetes/Docker), CRI-O(K8s 전용 경량/Red Hat OpenShift), runc(OCI 표준 런타임/저수준), gVisor(사용자 공간 커널/보안 강화), Kata Containers(VM 기반 컨테이너/강력한 격리/멀티테넌트)

장점: MB 단위 경량/빠른 시작, 어디서나 동일 실행 이식성, 개발-운영 환경 동일 일관성, 빠른 스케일링 확장성, 높은 리소스 활용률 효율성

단점: 커널 공유로 VM 대비 격리 취약, 커널 취약점 영향 보안, Stateless 설계 필요 상태 관리, 대규모 시 오케스트레이션 필요 복잡성, 복잡한 네트워크 설정

OCI 표준: Runtime Spec(컨테이너 런타임 표준/runc), Image Spec(이미지 포맷 표준), Distribution Spec(이미지 배포 표준/레지스트리 API)

비교: 컨테이너(프로세스 격리/초 시작/MB 경량/커널 공유 취약/마이크로서비스) vs VM(완전 OS 격리/분 부팅/GB 무거움/강력한 격리/레거시)

연관: Docker, 컨테이너 이미지, Kubernetes, 마이크로서비스