
Docker와 Kubernetes는 실무적으로 많이 사용되고 있어서 개념은 들었지만, 서로의 역할과 관계를 명확하게 이해하지 못했다고 생각이 들어 블로그에 내용을 정리하고 이해해보려고 한다.
Docker는 컨테이너 기반의 가상화 기술이다.
전통적인 가상화 방식(VM)은 하드웨어 전체, 즉 OS를 가상화해서 독립된 OS 전체를 설치해 돌린다.
반면 Docker는 OS 위에서 컨테이너라는 격리된 사용자 공간(User Space) 을 만들어 거기서 앱을 실행한다.
"Docker는 커널은 공유하고, 사용자 공간은 분리한다."
쉽게 비유하면, 아파트 건물(호스트 os)에 여러 개의 세대(컨테이너)가 살고 있는 것
건물 구조(커널)은 공유하지만, 각 세대는 서로 격리된 공간에서 독립적으로 생활

도커는 아래와 같은 과정을 통해 컨테이너를 실행한다.

docker build 명령어를 사용하여 이미지 생성 docker run 명령어로 컨테이너 실행 Kubernetes는 컨테이너 오케스트레이션 도구이다.
Docker 같은 컨테이너를 운영 환경에서 안정적으로 관리하기 위해 만들어졌다.
쿠버네티스는 크게 Control Plane(제어 영역)과 Node(작업 영역)으로 나뉜다.
✅ 1. Control Plane (지휘자 역할)
kube-apiserver: 외부에서 명령 받는 창구 etcd: 상태 저장소 (컨테이너가 뭐가 돌고 있는지)controller-manager: 상태를 계속 체크하고 조정 scheduler: 컨테이너(pod)를 어느 노드에 배치할지 결정 ✅ 2. Node (컨테이너가 실제로 돌아가는 곳)
kubelet: Control Plane 지시를 받아 컨테이너 관리 container runtime: 실제로 컨테이너(Docker 등)를 실행 kube-proxy: 네트워크 트래픽 관리 
“컨테이너를 하나만 띄워서 사용해야지!” → ✅ Docker
“정해진 시간에 100개의 컨테이너를 자동으로 실행해야지!” → ✅ Kubernetes
즉, Docker는 이미지를 기반으로 컨테이너를 실행하는 기술이고, Kubernetes는 이런 Docker 컨테이너들을 자동으로 관리하고 운영하는 도구입니다.
정리하자면,
Docker는 실행 도구, Kubernetes는 관리 도구입니다.