플랫폼, 데브옵스와 클라우드

컨테이너란 무엇인가

meellon 2026. 6. 19. 07:00

학습 목표

가상 머신(VM)과 컨테이너의 차이를 설명할 수 있다.

컨테이너가 프로세스 격리로 동작함을 설명할 수 있다.

이미지·컨테이너·레지스트리의 관계를 설명할 수 있다.

컨테이너를 도입할 때 얻는 것과 잃는 것을 설명할 수 있다.

문제 상황

  • "내 로컬에선 되는데 서버에서만 깨진다"
    • Python 3.9 vs 3.11, OpenSSL 버전, libc 차이
  • VM마다 OS 패치·디스크·부팅 시간이 부담
    • 마이크로서비스 20개에 VM 20대는 무겁다
  • 배포할 때마다 수동으로 런타임 설치
    • 재현 가능한 환경 단위가 없다

오리엔테이션에서 code → deploy 파이프라인을 봤다. 컨테이너는 앱 + 의존성을 하나의 실행 단위로 묶는다.

1. VM vs 컨테이너

둘 다 격리를 제공하지만 추상화 층이 다르다.

  가상 머신 (VM) 컨테이너
격리 단위 하드웨어 가상화 (Hypervisor) OS 커널 위 프로세스
게스트 OS 각 VM마다 전체 OS 호스트 커널 공유
시작 시간 분 단위 (부팅) 초 단위
이미지 크기 GB 단위 MB~수백 MB
밀도 상대적으로 낮음 같은 호스트에 많이 배치 가능
  • VM이 필요한 경우
    • 다른 OS 커널이 필요 (Windows on Linux host 등)
    • 강한 하드웨어 수준 격리·컴플라이언스
  • 컨테이너가 유리한 경우
    • Linux 위 Linux 워크로드, 빠른 배포·스케일
    • 동일 커널에서 앱 단위 패키징

2. 컨테이너 = 격리된 프로세스

컨테이너는 "가벼운 VM"이 아니라 namespace + cgroup 으로 묶인 프로세스다.

  • Linux namespace
    • PID, mount, network, UTS 등 보이는 자원 분리
    • 컨테이너 안 PID 1은 호스트에서 다른 PID
  • cgroup (Control Group)
    • CPU·메모리·I/O 사용량 제한·측정
    • OOM 시 특정 컨테이너만 종료 가능

  • 호스트 커널 하나를 공유
    • 커널 취약점은 격리 경계를 넘을 수 있음 — 런타임·보안 편에서 보강
  • 컨테이너 안 프로세스는 호스트에서 ps로 볼 수 있다 (namespace 밖에서)
    • "가상"이지 물리적으로 다른 머신이 아님

3. 이미지 · 컨테이너 · 레지스트리

배포 단위의 핵심 개념 세 가지.

개념 설명 비유
Image 읽기 전용 레이어 스택. 앱·런타임·라이브러리 포함 클래스, 금형
Container 이미지에서 생성된 실행 인스턴스. 쓰기 레이어 추가 객체, 인스턴스
Registry 이미지 저장·배포 저장소 (Docker Hub, ECR, GCR) npm, Maven Central
  • 이미지는 불변(immutable) 에 가깝다
    • 변경은 새 이미지 빌드 → 배포
    • "서버에 SSH 들어가서 apt upgrade"는 컨테이너 철학과 어긋남
  • 컨테이너 쓰기 레이어는 삭제되면 사라짐
    • 영속 데이터는 볼륨·외부 DB에 (다음 Docker 편)
Dockerfile → docker build → Image → docker push → Registry
                                    → docker run  → Container(s)

4. 왜 컨테이너인가

플랫폼 오리엔테이션의 배포 문제에 대한 답.

이점 설명
환경 일관성 dev / staging / prod 동일 이미지
빠른 배포 VM 부팅 없이 pull & run
밀도·비용 같은 하드웨어에 더 많은 워크로드
오케스트레이션 K8s가 컨테이너를 스케줄·복구·스케일 (이후 편)
트레이드오프 설명
상태 관리 기본적으로 ephemeral — 스토리지 설계 필요
네트워킹 overlay, service mesh 등 복잡도
보안 공유 커널 — 이미지 스캔, rootless, 최소 권한
관측 로그·메트릭이 stdout/파일이 아닌 플랫폼으로 모여야 함
  • 컨테이너만으로 끝이 아니다
    • 오케스트레이션(Kubernetes), CI/CD, 레지스트리·시크릿이 함께 가야 프로덕션에 쓴다

다음에 다룰 것

  • Docker 기초
  • Dockerfile, 레이어 캐시, 볼륨, 포트 매핑

해당 내용은 Docker Documentation 및 OCI Image Format Specification 의 내용을 기반으로 합니다.

'플랫폼, 데브옵스와 클라우드' 카테고리의 다른 글

Pod와 Deployment  (0) 2026.06.23
Kubernetes 개요  (0) 2026.06.22
컨테이너 런타임과 보안  (0) 2026.06.21
Docker 기초  (0) 2026.06.20
플랫폼 오리엔테이션  (0) 2026.06.18