- 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의 차이
항목 | Docker | Kubernetes |
---|---|---|
목적 | 애플리케이션 패키징 및 실행 | 컨테이너 오케스트레이션 |
대상 | 단일 컨테이너 중심 | 수많은 컨테이너 자동 관리 |
구성 | Docker CLI, Dockerfile | kubectl, YAML, 컨트롤 플레인 |
실행 단위 | Container | Pod |
왜 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는 네트워크, 스토리지, 라이프사이클을 공유하는 단위이기 때문에 복수 컨테이너를 논리적으로 묶어 효율적으로 배포·관리할 수 있다.