Cloud & Platform
컨테이너 가상화 이해와 핵심 요소 총정리
컨테이너 가상화 이해와 핵심 요소 총정리 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
1. 컨테이너 가상화(Container Virtualization) 개념
- 정의: 운영체제(OS) 수준에서 애플리케이션과 그 실행 환경을 격리하는 가벼운 가상화 기술.
- 핵심 특징:
- 애플리케이션 + 라이브러리 + 설정 파일을 패키징.
- 호스트 OS의 커널을 공유하여 실행.
- VM보다 경량이며, 빠른 시작 속도와 효율적인 자원 사용 가능.
2. 컨테이너와 전통적인 가상화 비교
| 항목 | 가상 머신(VM) | 컨테이너 | | --- | --- | --- | | OS | 각 VM마다 전체 OS 필요 | 호스트 OS 커널 공유 | | 크기 | 무거움 (수 GB) | 가벼움 (수 MB~수 100MB) | | 부팅 속도 | 수 분 | 수 초~수 밀리초 | | 자원 효율 | 낮음 | 높음 | | 격리 수준 | 강함 | OS 수준 격리 (VM보다 약함) |
요점: VM은 완전한 OS를 포함한 하드 격리, 컨테이너는 애플리케이션 중심 경량 격리.
3. 컨테이너 기술 핵심 요소
- 이미지(Image)
- 컨테이너 실행의 청사진(템플릿).
- 애플리케이션, 라이브러리, 설정 포함.
- 불변(immutable)하며 재사용 가능.
- 컨테이너(Container)
- 이미지를 실행한 상태.
- 일시적이며 필요 시 생성/삭제 가능.
- 레지스트리(Registry)
- 이미지 저장소.
- 예: Docker Hub, AWS ECR, GitHub Container Registry.
- 오케스트레이션(Orchestration)
- 여러 컨테이너 배포, 확장, 관리.
- 대표 도구: Kubernetes, Docker Swarm, OpenShift.
- 네트워킹
- 컨테이너 간 통신과 외부 접근 관리.
- NAT, 브리지, 오버레이 네트워크 등 지원.
- 스토리지
- 컨테이너는 기본적으로 휘발성 저장소.
- 영속 데이터 필요 시 **볼륨(Volume)**이나 Persistent Volume 사용.
4. 컨테이너 기술 장점
- 경량성 & 빠른 배포: VM 대비 훨씬 빠르게 생성/삭제 가능.
- 이식성(Portability): OS 환경과 상관없이 어디서나 동일하게 실행.
- 확장성(Scalability): 클러스터 기반 자동 확장 가능.
- 개발-운영 일관성: “개발 환경 = 운영 환경” 보장.
5. 컨테이너 기술 단점/주의점
- 격리 수준 낮음: 커널 공유로 인해 VM보다 보안 위험 존재.
- 호스트 OS 의존: Windows용 컨테이너와 Linux용 컨테이너 호환 불가.
- 복잡한 운영: 다수 컨테이너 관리 시 오케스트레이션 필요.
6. 대표 컨테이너 플랫폼
- Docker
- 컨테이너 생성, 실행, 배포 표준 도구.
- Kubernetes
- 컨테이너 클러스터 관리, 자동화, 오케스트레이션.
- Podman
- Docker와 유사, 데몬 없이 실행 가능.
- CRI-O, containerd
- Kubernetes와 연동되는 경량 런타임.
7. 컨테이너 vs VM 선택 기준
- 컨테이너 선택: 빠른 배포, 마이크로서비스, 이식성 중요 시.
- VM 선택: 높은 격리, 다양한 OS 필요, 보안 중요 시.
💡 핵심 포인트 요약
- 컨테이너는 애플리케이션 중심 경량 가상화.
- OS 커널 공유 → VM보다 효율적.
- 이미지 기반, 레지스트리에서 배포.
- 단독 컨테이너보다 Kubernetes 등 오케스트레이션 필수.
- 빠른 배포, 이식성, 확장성 장점 → 클라우드 환경 필수 기술.