네트워크

[DevOps] 컨테이너 기술

Castle Bird 2026. 2. 8. 13:17

컨테이너 기술

컨테이너를 이해하려면 기존 서버 → VM → 컨테이너 순서로 알아야 합니다.

 

1. 기존 서버

하나의 OS 위에 여러 App 실행

문제: App1 메모리 폭주 → App2까지 느려짐


2. 가상머신(VM)

  • 기존 서버의 문제점을 개선
  • OS → 하이퍼바이저 → Guest OS별로 App 격리

문제: 용량을 많이 차지한다. OS 여러 개 → 용량 GB 단위

 

개념 등장 년도

  • 1964-67: IBM CP-40/CP-67 (최초 하이퍼바이저 개념)
  • 1972: IBM VM/370 (상용화)
  • 1999: x86 VM (VMware)

3. 컨테이너 기술

  • 기존 가상머신의 문제점을 개선
  • OS를 각각 가지지 않고 공유함

장점:

  • 용량 MB 단위
  • 시작 초 단위
  • 서버 밀도 2-3배

개념 등장 년도

  • 1979: chroot (격리 기반)
  • 2000: FreeBSD Jai
  • 2004: Solaris Zones
  • 2006: cgroups (Google)
  • 2008: LXC (Linux Containers 완성형)

의문점

하나의 OS를 공유하면 기본 Server와 다를게 없지 않나?

→ Container Runtime이 각각의 컨테이너에 할당된 메모리 등을 컨트롤함


4. 컨테이너 기술을 이용하는 Tool

대표 도구들

  • Docker: 가장 인기있는 컨테이너 도구. docker run 한줄로 실행
  • Podman: Docker와 동일 명령어 사용, 루트리스(rootless)로 보안↑
  • Containerd: Docker의 핵심 엔진. Kubernetes에서 많이 사용
  • CRI-O: Kubernetes 전용 경량 런타임
  • Buildah: 컨테이너 이미지 빌드 전문 도구

 

Docker

  • 2013.3: 최초 발표 (PyCon)
  • 2014.6: 정식 출시
  • 도커 이전에 컨테이너 기술이 존재했고 둘이 다름을 알아야함

 

어떤 걸 써야 할까?

개발/학습 → Docker
보안중요 → Podman
Kubernetes → Containerd/CRI-O
빌드만 → Buildah

Docker로 시작 → 필요시 다른 도구로 전환 추천


5. 컨테이너 오케스트레이션

수백 개의 컨테이너를 자동 관리하는 기술

 

대표 도구: Kubernetes(K8s)

 

도커 단독사용에 대한 문제점을 해결해주는 컨테이너 오케스트레이션

상황 Docker 단독 오케스트레이션
서버 1대, App 1개 간단✅ 과잉❌
서버 10대, App 100개 수동 관리 (밤새 명령어 실행) ❌ 자동화✅

 

 

자동 확장:

트래픽 폭주시 도커 단독사용하면 폭주 하는 컨테이너 마다 명령어 실행을 해주어야 한다. 

→ 컨테이너 오케스트레이션이 자동으로 컨테이너를 늘려준다.

 

자가 복구:

도커의 컨테이너가 죽는다면 죽은 컨테이너마다 수동으로 재시작을 해주어야한다.

→ 자동으로 재시작해준다.

 

선언적 인프라

도커만 실행시 원하는 상태를 맞추기 위해 여러 명령어를 다 실행해주어야 한다.

→ 원하는 상태만 정해주면 알아서 명령러 처리 해준다.

 

 

📝 Docker로 실행, K8s로 운영을 한다고 생각하자.