[쿠버네티스] 컨테이너 한방정리 - 일프로 부족할때 (TS러버)
해당 블로그는 [쿠버네티스 어나더 클래스] 강의에 일부 내용입니다. 복습을 위한 자료 입니다.
강의 링크 :https://inf.run/f2xSR
기술 흐름으로 이해하는 컨테이너

1. Linux의 흐름과 배포판 계열
리눅스는 Unix에서 출발해 다양한 배포판으로 확장되었습니다.
이 중에서 우리가 알아야 할 대표적인 두 가지 계열은 다음과 같습니다:
Debian 계열
무료, 커뮤니티 중심
대표 배포판: Ubuntu
RedHat 계열
유료, 기업 중심
대표 배포판: RHEL (Red Hat Enterprise Linux), CentOS, Fedora
2. Red Hat 계열 배포판 구조
Red Hat의 리눅스 배포판은 다음과 같은 순서로 만들어집니다:
- Fedora: 최신 기능 개발을 위한 무료 배포판
- CentOS Stream: 기능 테스트를 위한 중간 단계 (테스트 베드)
- RHEL: 안정화된 유료 기업용 배포판
과거에는 CentOS가 RHEL과 바이너리 호환되는 무료 안정화 배포판이었지만,
현재는 CentOS Stream이라는 테스트용 배포판으로 변경되었습니다.
→ 이로 인해 CentOS 사용자들은 새로운 선택지를 고민해야 하는 상황입니다.
RedHat 계열인 CentOS는 종료 됐다.
Rocky Linux는 쿠버네티스를 설치할 때 Redhat 계열을 보면 된다.
Container 흐름

1. 컨테이너의 태동: 리눅스 커널 기능 기반
컨테이너 기술은 리눅스의 사용자 격리와 자원 제어 기능에서 시작되었습니다.
chroot- 특정 디렉토리를 루트처럼 보이게 해 사용자 격리 시작cgroups- CPU, 메모리 등 자원 사용량을 앱 단위로 제한namespaces- 프로세스, 네트워크, 파일 시스템 등의 리눅스 커널 수준 격리 지원
2. 최초의 컨테이너: LXC (Linux Containers)
리눅스 커널 기능들을 통합하여 만든 최초의 컨테이너 시스템
이름 그대로 Linux Container의 약자
다만 일반 개발자에게는 다소 어렵고 무거운 방식이었음
3. Docker
복잡한 리눅스 커널 기능을 CLI 한 줄로 사용 가능하게 단순화
이미지 빌드, 실행, 배포까지의 워크플로우를 혁신적으로 개선
개발자 환경 구성의 표준 도구로 자리잡음
4.Kubernetes와 Docker의 갈등
Kubernetes는 Docker를 기본 컨테이너 런타임으로 사용
많은 개발자들이 "Kubernetes = Docker 오케스트레이션 도구"로 오해함
Kubernetes는 CRI(Container Runtime Interface) 라는 표준 인터페이스를 따르기 시작
Docker는 CRI에 직접 호환되지 않음 → 중간 계층(`dockershim`)이 필요
Kubernetes는 점점 Docker를 제거하고, 직접 CRI를 지원하는 런타임을 선호하게 됨
5.ContainerD
Docker는 하나의 거대한 엔진으로 구성되어 있었음
내부 기능 중 컨테이너를 실제 실행하는 기능인
containerd를 독립 프로젝트로 분리containerd는 Docker의 핵심 런타임이었고, CNCF에 기부됨현재는
containerd,CRI-O가 Kubernetes에 호환되는 대표 런타임으로 사용됨
containerd : Docker에서 분리된 경량 런타임, Kubernetes에서 널리 사용
CRI-O : RedHat 주도로 만들어진 Kubernetes 전용 컨테이너 런타임
6. Docker의 현재: Mirantis에 인수
Docker는 기술적 성공에 비해 수익화에 어려움을 겪음
결국 Mirantis라는 기업에 Docker Enterprise 부문 인수됨
Mirantis는 OpenStack 관련 기업이며, Docker를 Kubernetes와 다시 호환되도록 노력 중
정리
초기 chroot → cgroups → namespaces → LXC
대중화 Docker로 컨테이너 사용 쉬워짐
발전 rkt 등 대안 컨테이너 등장, rootless 도입
통합 Kubernetes가 CRI 중심으로 발전하며 Docker는 서서히 퇴장
현재 containerd, CRI-O 중심 컨테이너 시대, Docker는 Mirantis 소속
쿠버네티스를 사용하면 편리한점
1. App을 컨테이너에 담아서 배포한다.
시스템 운영 노하우를 많이 가지고 있다.
그림으로 이해 했을때 이것은 Blue/Green 배포의 예제로 이해했다. AWS에서 Container에서 CodeDeploy가 해당 1~5단계를 수행하고 Container Orchestration에서 CodeDeploy는 2단계만에 가능한걸로 이해했다.
Docker
Docker Image는 이제 OCI 표준을 따르기 때문에 다시 안만들어도 된다.
ContainerD는 기존 Docker Engine내에서 사용하던 기술이다.
Docker 유료화는 Docker Desktop의 일부 기능에 한해서 유료화이다.
댓글을 작성해보세요.
