도커, 쿠버네티스 및 기초 개념 정리

도람·2026년 1월 5일
post-thumbnail

리눅스 계열 정리


리눅스는 크게 Debian 계열과 Red Hat 계열로 나눌 수 있다.
이 구분은 무료/유료의 문제가 아니라, 패키지 관리 방식과 배포 정책의 계열 차이이다.

  • Debian 계열은 apt, dpkg 기반의 패키지 관리 방식을 사용한다.
  • Red Hat 계열은 rpm, dnf(yum) 기반의 패키지 관리 방식을 사용한다.

Debian 계열에서 가장 대중적으로 사용되는 배포판은 Ubuntu이다.
Ubuntu는 Debian을 기반으로 하되, 설치 편의성, 드라이버 지원, 빠른 릴리스 주기 등을 강화한 배포판이다.
이 때문에 개인 개발 환경, 서버 테스트, 컨테이너 베이스 이미지 등에서 매우 많이 사용된다.


Red Hat 계열의 대표적인 배포판은 RHEL(Red Hat Enterprise Linux)이다.
RHEL은 기업 환경을 대상으로 한 상용 리눅스로, 긴 지원 기간(LTS), 안정적인 업데이트, 공식 기술 지원을 제공한다.
다만 라이센스 비용이 많이 발생한다.


RHEL은 소스가 공개되기 때문에, 이를 기반으로 한 호환 배포판들이 존재한다.
대표적으로 Rocky Linux, AlmaLinux가 있다.

과거에는 CentOS가 이 역할을 했으나, 현재는 사용하지 않는다.

그 대안으로 Rocky Linux와 AlmaLinux가 등장했으며 현재 점유율은 Rocky Linux가 높다.

기업 환경에서는 RHEL과 바이너리 호환을 유지하면서 무료로 사용할 수 있는 Rocky Linux를 표준처럼 사용하는 경우가 많다.


나는 리눅스의 역사를 공부하면서 무료인 Ubuntu를 쓰면 되는 것 아닌가라는 생각이 들 수 있지만,
기업 환경에서는 단순한 무료 여부보다 운영 안정성, 업데이트 정책, 표준화된 관리 방식이 훨씬 중요하다는 것을 깨닫게 되었다.

Ubuntu는 릴리스 주기가 빠르고 변화가 잦지만,
Red Hat 계열은 변경 폭이 작고 장기간 동일한 환경을 유지하기 때문에 Red Hat을 선호한다는 것을 알게 되었다.

따라서 OS를 직접 관리하는 비용과 리스크를 줄이기 위해
기업에서는 Rocky Linux와 같은 Red Hat 계열 배포판을 선호하는 경우가 많다는 것을 알게 되었다.


컨테이너와 컨테이너 런타임, 컨테이너 오케스트레이션

컨테이너, 컨테이너 런타임

컨테이너는 애플리케이션과 실행 환경을 함께 묶은 실행 단위이다.
이 컨테이너를 실제로 생성하고 실행하는 역할을 하는 것이 컨테이너 런타임이다.


우리가 잘 아는 Docker는
단순한 도구 하나가 아니라, 내부에 컨테이너 런타임 기능을 포함한 플랫폼이다.

  • 이미지를 빌드하고
  • 컨테이너를 생성하고
  • 컨테이너를 실행하고 관리한다

즉, 컨테이너가 결과물이라면, 컨테이너 런타임은 컨테이너를 실행시키는 엔진이다.


컨테이너 런타임의 예시는 다음과 같다.

ex) Docker, containerd, CRI-O

이 중 containerd는 Docker에서 분리되어 나온 핵심 런타임으로,
현재 쿠버네티스 환경에서 가장 널리 사용되고 있다.


컨테이너 오케스트레이션

컨테이너 오케스트레이션이란 이러한 컨테이너 런타임 위에서 실행되는 수많은 컨테이너들을 자동으로 관리·조정하는 시스템이다.

  • 컨테이너 배포
  • 스케일 아웃/인
  • 장애 발생 시 재시작
  • 로드 밸런싱

이 역할을 수행하는 대표적인 도구가 쿠버네티스이다.
쿠버네티스는 컨테이너 런타임을 직접 대체하는 것이 아니라,
컨테이너 런타임을 제어하는 상위 관리자 역할을 수행한다.


컨테이너 런타임을 도커 <-> containerD로 바꾼다면

쿠버네티스 환경에서는 과거에 Docker를 컨테이너 런타임으로 사용했지만,
현재는 containerd나 CRI-O를 직접 사용하는 방식이 표준이 되었다.

이때 흔히 드는 의문이 있었다.

"컨테이너 런타임을 바꾸면 이미지도 다시 만들어야 하지 않을까?"

결론부터 말하면 그럴 필요가 없다.


OCI(Open Container Initiative)

그 이유는 OCI(Open Container Initiative) 표준 때문이다.
OCI는 컨테이너 이미지 형식과 런타임 동작 방식에 대한 표준을 정의하는 단체이다.

  • Docker 이미지
  • containerd 이미지
  • CRI-O 이미지

이들은 모두 OCI 표준을 따르기 때문에 서로 호환된다.


실제로 containerd 내부에서도
Docker에서 사용하던 runC를 그대로 사용한다.

즉, 컨테이너 런타임을 Docker에서 containerd로 변경하더라도
기존에 만들어 둔 이미지 변경 없이 그대로 사용 가능하다.

이 구조 덕분에 쿠버네티스는
특정 런타임에 종속되지 않고 유연하게 런타임을 교체할 수 있는 것이다.


요약

  • 리눅스는 Debian 계열과 Red Hat 계열로 나뉜다.
  • 기업 환경에서는 안정성과 표준화 때문에 Red Hat 계열(Rocky Linux)을 선호한다.
  • Docker는 컨테이너 런타임을 포함한 플랫폼이다.
  • 쿠버네티스는 컨테이너 런타임을 지휘하는 오케스트레이터이다.
  • OCI 표준 덕분에 런타임을 바꿔도 이미지는 그대로 사용 가능하다.


위 포스팅은 인프런 강의 중 쿠버네티스 어나더 클래스-Sprint 1, 2를 참고하여 작성하였습니다.

profile
정도를 걷는 엔지니어

0개의 댓글