← 스터디 홈
1편 · 약 6분

컨테이너 기초

왜 컨테이너인가

쿠버네티스를 이해하려면 먼저 컨테이너가 무엇을 해결했는지 알아야 한다. 컨테이너는 애플리케이션과 그 실행에 필요한 라이브러리·런타임을 하나의 이미지로 묶어, "내 PC에서는 됐는데"라는 환경 차이 문제를 없앤다. 가상머신과 달리 게스트 OS 커널을 따로 두지 않고 호스트 커널을 공유하기 때문에 가볍고 빠르게 뜬다.

핵심 구성요소

  • 이미지: 애플리케이션 + 의존성의 읽기 전용 스냅샷.
  • 컨테이너: 이미지를 실행한 격리된 프로세스.
  • 레지스트리: 이미지를 보관·배포하는 저장소.

격리는 리눅스 커널 기능인 namespaces(무엇을 볼 수 있는가)와 cgroups(얼마나 쓸 수 있는가)로 이뤄진다.

컨테이너의 한계

컨테이너 하나를 띄우는 것은 쉽다. 그러나 수십~수백 개를 여러 서버에 배치하고, 죽으면 다시 띄우고, 트래픽에 따라 늘리고 줄이며, 서로를 찾아 통신하게 하는 일은 수작업으로 감당할 수 없다. 이 "오케스트레이션" 문제를 푸는 것이 쿠버네티스다.

References

  • https://kubernetes.io/docs/concepts/overview/
  • https://docs.docker.com/get-started/