학습 내용
컨테이너란
- 애플리케이션과 그 실행 환경을 하나로 패키징한 단위
- 호스트 OS 커널을 공유하면서 프로세스를 격리하여 실행
- VM보다 가볍고 빠르게 시작 가능
가상머신 vs 컨테이너
| 항목 | 가상머신(VM) | 컨테이너 |
|---|---|---|
| OS | 각 VM마다 Guest OS 포함 | 호스트 OS 커널 공유 |
| 크기 | 수 GB | 수 MB |
| 시작 시간 | 분 단위 | 초 단위 |
| 격리 수준 | 강함 | 상대적으로 약함 |
컨테이너 이미지 생성 흐름
소스코드 작성 → Dockerfile 작성 → docker build → 이미지 생성
→ docker push → Docker Hub 업로드 → docker pull → 실행
멀티호스트 도커 플랫폼의 한계
단일 도커 호스트로 운영 시 문제:
- 호스트 장애 시 전체 서비스 중단
- 컨테이너 수동 배치 및 관리 필요
- 스케일링 자동화 불가
컨테이너 오케스트레이션
여러 호스트에 걸쳐 컨테이너를 자동으로 배포/스케일링/관리하는 시스템
Kubernetes가 해결하는 것:
- 자동 배포 및 롤링 업데이트
- 셀프 힐링 (장애 컨테이너 자동 재시작)
- 자동 스케일링
- 서비스 디스커버리 및 로드밸런싱
- 스토리지 오케스트레이션
실습
# 도커 기본 실습 (컨테이너 개념 확인)
docker pull smlinux/nodeinfo:v1
docker create --name app -p 80:8080 smlinux/nodeinfo:v1
docker start app
docker ps
curl localhost:80
docker rm -f app체크리스트
- 컨테이너와 VM의 차이 설명 가능
- 컨테이너 이미지 생성 → push → pull → 실행 흐름 이해
- 오케스트레이션이 필요한 이유 설명 가능