Docker와 Kubernetes 관계

박하늘·2025년 6월 11일
post-thumbnail

Docker와 Kubernetes는 실무적으로 많이 사용되고 있어서 개념은 들었지만, 서로의 역할과 관계를 명확하게 이해하지 못했다고 생각이 들어 블로그에 내용을 정리하고 이해해보려고 한다.

🐳 도커(Docker)란 무엇인지?

Docker는 컨테이너 기반의 가상화 기술이다.

전통적인 가상화 방식(VM)은 하드웨어 전체, 즉 OS를 가상화해서 독립된 OS 전체를 설치해 돌린다.
반면 Docker는 OS 위에서 컨테이너라는 격리된 사용자 공간(User Space) 을 만들어 거기서 앱을 실행한다.

"Docker는 커널은 공유하고, 사용자 공간은 분리한다."

쉽게 비유하면, 아파트 건물(호스트 os)에 여러 개의 세대(컨테이너)가 살고 있는 것
건물 구조(커널)은 공유하지만, 각 세대는 서로 격리된 공간에서 독립적으로 생활

도커는 어떻게 실행될까?

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

  1. Dockerfile 작성
    -> 어떤 환경에서 어떤 애플리케이션을 실행할지 정의
  2. Dockerfile을 바탕으로 도커 이미지 생성
    -> docker build 명령어를 사용하여 이미지 생성
  3. 이미지를 실행하여 도커 컨테이너 생성
    -> docker run 명령어로 컨테이너 실행

☸️ 쿠버네티스(Kubernetes)란 무엇인가?

Kubernetes는 컨테이너 오케스트레이션 도구이다.
Docker 같은 컨테이너를 운영 환경에서 안정적으로 관리하기 위해 만들어졌다.

쿠버네티스 구성 요소

쿠버네티스는 크게 Control Plane(제어 영역)Node(작업 영역)으로 나뉜다.

✅ 1. Control Plane (지휘자 역할)

  • 클러스터를 통제하는 뇌
  • 주요 구성
    • kube-apiserver: 외부에서 명령 받는 창구
    • etcd: 상태 저장소 (컨테이너가 뭐가 돌고 있는지)
    • controller-manager: 상태를 계속 체크하고 조정
    • scheduler: 컨테이너(pod)를 어느 노드에 배치할지 결정

✅ 2. Node (컨테이너가 실제로 돌아가는 곳)

  • 하나의 가상머신(VM) 또는 물리 서버
  • 주요 구성
    • kubelet: Control Plane 지시를 받아 컨테이너 관리
    • container runtime: 실제로 컨테이너(Docker 등)를 실행
    • kube-proxy: 네트워크 트래픽 관리

🧾 정리

  • “컨테이너를 하나만 띄워서 사용해야지!” → ✅ Docker

  • “정해진 시간에 100개의 컨테이너를 자동으로 실행해야지!” → ✅ Kubernetes

  • 즉, Docker는 이미지를 기반으로 컨테이너를 실행하는 기술이고, Kubernetes는 이런 Docker 컨테이너들을 자동으로 관리하고 운영하는 도구입니다.

  • 정리하자면,

    • Docker는 한 개의 컨테이너를 직접 실행하고 관리하는 데 최적화되어 있고,
    • Kubernetes는 여러 개의 컨테이너를 묶어 서비스 단위로 자동 배포 및 관리하는 데 특화되어 있습니다.

Docker는 실행 도구, Kubernetes는 관리 도구입니다.

profile
백엔드 개발자

0개의 댓글