Taeyoung Kim

Cloud & Platform

컨테이너 가상화 이해와 핵심 요소 총정리

컨테이너 가상화 이해와 핵심 요소 총정리 학습 내용을 정리한 백필 노트입니다.

이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.


1. 컨테이너 가상화(Container Virtualization) 개념

  • 정의: 운영체제(OS) 수준에서 애플리케이션과 그 실행 환경을 격리하는 가벼운 가상화 기술.
  • 핵심 특징:
    • 애플리케이션 + 라이브러리 + 설정 파일을 패키징.
    • 호스트 OS의 커널을 공유하여 실행.
    • VM보다 경량이며, 빠른 시작 속도와 효율적인 자원 사용 가능.

2. 컨테이너와 전통적인 가상화 비교

| 항목 | 가상 머신(VM) | 컨테이너 | | --- | --- | --- | | OS | 각 VM마다 전체 OS 필요 | 호스트 OS 커널 공유 | | 크기 | 무거움 (수 GB) | 가벼움 (수 MB~수 100MB) | | 부팅 속도 | 수 분 | 수 초~수 밀리초 | | 자원 효율 | 낮음 | 높음 | | 격리 수준 | 강함 | OS 수준 격리 (VM보다 약함) |

요점: VM은 완전한 OS를 포함한 하드 격리, 컨테이너는 애플리케이션 중심 경량 격리.


3. 컨테이너 기술 핵심 요소

  1. 이미지(Image)
    • 컨테이너 실행의 청사진(템플릿).
    • 애플리케이션, 라이브러리, 설정 포함.
    • 불변(immutable)하며 재사용 가능.
  2. 컨테이너(Container)
    • 이미지를 실행한 상태.
    • 일시적이며 필요 시 생성/삭제 가능.
  3. 레지스트리(Registry)
    • 이미지 저장소.
    • 예: Docker Hub, AWS ECR, GitHub Container Registry.
  4. 오케스트레이션(Orchestration)
    • 여러 컨테이너 배포, 확장, 관리.
    • 대표 도구: Kubernetes, Docker Swarm, OpenShift.
  5. 네트워킹
    • 컨테이너 간 통신과 외부 접근 관리.
    • NAT, 브리지, 오버레이 네트워크 등 지원.
  6. 스토리지
    • 컨테이너는 기본적으로 휘발성 저장소.
    • 영속 데이터 필요 시 **볼륨(Volume)**이나 Persistent Volume 사용.

4. 컨테이너 기술 장점

  • 경량성 & 빠른 배포: VM 대비 훨씬 빠르게 생성/삭제 가능.
  • 이식성(Portability): OS 환경과 상관없이 어디서나 동일하게 실행.
  • 확장성(Scalability): 클러스터 기반 자동 확장 가능.
  • 개발-운영 일관성: “개발 환경 = 운영 환경” 보장.

5. 컨테이너 기술 단점/주의점

  • 격리 수준 낮음: 커널 공유로 인해 VM보다 보안 위험 존재.
  • 호스트 OS 의존: Windows용 컨테이너와 Linux용 컨테이너 호환 불가.
  • 복잡한 운영: 다수 컨테이너 관리 시 오케스트레이션 필요.

6. 대표 컨테이너 플랫폼

  1. Docker
    • 컨테이너 생성, 실행, 배포 표준 도구.
  2. Kubernetes
    • 컨테이너 클러스터 관리, 자동화, 오케스트레이션.
  3. Podman
    • Docker와 유사, 데몬 없이 실행 가능.
  4. CRI-O, containerd
    • Kubernetes와 연동되는 경량 런타임.

7. 컨테이너 vs VM 선택 기준

  • 컨테이너 선택: 빠른 배포, 마이크로서비스, 이식성 중요 시.
  • VM 선택: 높은 격리, 다양한 OS 필요, 보안 중요 시.

💡 핵심 포인트 요약

  • 컨테이너는 애플리케이션 중심 경량 가상화.
  • OS 커널 공유 → VM보다 효율적.
  • 이미지 기반, 레지스트리에서 배포.
  • 단독 컨테이너보다 Kubernetes 등 오케스트레이션 필수.
  • 빠른 배포, 이식성, 확장성 장점 → 클라우드 환경 필수 기술.