Published on

1단계: 개념 잡기 - Docker vs Kubernetes

Docker란 무엇인가?

  • 컨테이너 기반 가상화 기술
  • 하나의 애플리케이션과 그 실행 환경(Library, Runtime 등)을 하나의 이미지로 패키징
  • 대표 명령어:
    • docker build
    • docker run
    • docker ps
    • docker stop

Kubernetes란 무엇인가?

  • 다수의 Docker 컨테이너를 자동으로 배포, 확장, 복구, 네트워킹하는 오케스트레이션 플랫폼
  • 기본 구성 요소:
    • Pod: 컨테이너 1개 이상을 담는 최소 실행 단위
    • Node: 실제 컨테이너가 실행되는 머신
    • Cluster: 여러 노드로 구성된 집합

Docker와 Kubernetes의 차이

항목DockerKubernetes
목적애플리케이션 패키징 및 실행컨테이너 오케스트레이션
대상단일 컨테이너 중심수많은 컨테이너 자동 관리
구성Docker CLI, Dockerfilekubectl, YAML, 컨트롤 플레인
실행 단위ContainerPod

왜 Kubernetes에서 Docker를 쓰는가?

  • Docker는 컨테이너 실행용 런타임으로 널리 사용됨
  • Kubernetes는 자체적으로 컨테이너를 실행하지 않고, Docker 등 컨테이너 런타임을 통해 실행
  • Kubernetes가 관리하는 것은 Pod이며, Pod 안에서 Docker가 동작하는 구조

요약

  • Docker는 애플리케이션 실행 환경을 표준화하는 도구이며, Kubernetes는 그 컨테이너들을 자동으로 배포·확장·관리하는 오케스트레이터이다.
  • Kubernetes는 Pod 단위로 컨테이너를 실행하고, 내부적으로는 Docker와 같은 런타임을 통해 실제 컨테이너를 구동한다.

심화학습

Q1: Docker 없이 Kubernetes만 사용할 경우 어떤 컨테이너 런타임이 대안으로 사용되는가?

A: containerd, CRI-O 등이 대표적인 대안이다. Kubernetes는 CRI를 통해 다양한 런타임과 연동할 수 있기 때문에 Docker에 종속되지 않는다.

Q2: Docker와 Kubernetes의 구조적 차이가 배포 방식에 어떤 영향을 미치는가?

A: Docker는 단일 컨테이너 중심으로 수동 배포에 적합하고, Kubernetes는 다중 컨테이너 환경에서 YAML 설정을 통한 선언적 배포와 자동 확장이 가능하다.

Q3: Kubernetes에서 Pod 단위로 구성하는 것이 컨테이너 관리에 어떤 이점을 주는가?

A: Pod는 네트워크, 스토리지, 라이프사이클을 공유하는 단위이기 때문에 복수 컨테이너를 논리적으로 묶어 효율적으로 배포·관리할 수 있다.