컨테이너 기술과 Docker / 컨테이너 오케스트레이션
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- *개발자, DevOps 엔지니어, 클라우드 인프라 관리자**
- 초보자: 컨테이너 기술의 기초 이해
- 중급자: Docker/Kubernetes 활용법
- 고급자: 클라우드 기반 오케스트레이션 전략
핵심 요약
- 컨테이너는
cgroups
와namespace
를 기반으로 OS 수준 가상화 기술이며, 리눅스 커널 기능을 활용해 애플리케이션 격리 - Docker는 컨테이너 빌드→배포→실행→공유 전 과정을 표준화한 플랫폼 (
Dockerfile
,Docker Hub
제공) - Kubernetes는 Google Borg 시스템에서 유래한 대규모 컨테이너 오케스트레이션 도구 (
Pod
,ReplicaSet
,Auto Scaling
등 핵심 기능 제공)
섹션별 세부 요약
1. 컨테이너 기술의 기원과 원리
- OS 수준 가상화 기술은 Solaris Zones, LXC에서 기원
cgroups
: CPU/메모리 리소스 제한namespace
: 프로세스 ID, 파일 시스템, 네트워크 격리- 커널 공유 → 자원 효율성 ↑, 격리로 안정성 유지
2. Docker의 역할과 기능
- LXC 명령어 대신 CLI 기반으로 컨테이너 운영 (
docker run
등) - 이미지 레지스트리(Docker Hub)로 배포 표준화
- Dockerfile로 개발/운영 환경 일관성 확보
3. 컨테이너 오케스트레이션의 필요성
- 수십~수천 개 컨테이너 자동 스케줄링, 복구, 확장 필요
- 스키프트 기반 관리는 유지보수 어려움, 버전 충돌 위험
4. Kubernetes와 자동화 기능
- Borg 시스템에서 유래한 Kubernetes
- Pod 단위로 컨테이너 배치, ReplicaSet으로 원하는 상태 유지
- Auto Scaling: CPU/메모리 지표 기반 실시간 확장
- Self-Healing: Health Probe로 장애 시 자동 복구
- 선언형 인프라: YAML/JSON으로 원하는 상태 정의 후 자동화
5. AWS 기반 솔루션
- Amazon ECS: Kubernetes 없이도 AWS 내 컨테이너 클러스터 운영
- Amazon EKS: Kubernetes 기능 유지 + AWS가 Control Plane 관리
결론
- Docker로 개발 환경 일관성 확보, Kubernetes로 자동화된 오케스트레이션
- AWS ECS/EKS 활용 시 인프라 관리 복잡도 감소
- Infra as Code(IaC) 실현 → 재현 가능하고 안전한 배포 가능