[SB 3기] 코드잇 스프린트 위클리페이퍼 11주차
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- *개발자 및 DevOps 엔지니어** (중간~고급 레벨, 컨테이너 기술과 오케스트레이션 개념 이해 필요)
핵심 요약
- 컨테이너(Container)는
chroot
,cgroups
,namespaces
등의 Linux 기술을 기반으로, 단일 OS 커널 공유하여 가상화된 실행 환경 제공 - Docker는 컨테이너 기술을 구현한 도구로,
Dockerfile
과Docker Hub
를 통해 이미지 기반 배포 및 관리 가능 - 컨테이너 오케스트레이션은 자동 확장, 자가 복구, 선언적 인프라 문제를 해결하여 대규모 인프라 운영 효율성 향상
섹션별 세부 요약
1. 컨테이너 기술의 정의 및 특징
- 컨테이너는 애플리케이션과 실행 환경을 패키징하여 격리된 공간에서 실행 가능
- 장점
- 가상머신 대비 리소스 사용량 감소 및 빠른 실행 속도
- 환경 일관성 보장 (모든 환경에서 동일하게 동작)
- CI/CD 연동을 통한 배포 자동화 가능
- 기본 기술
- Linux의 chroot
, cgroups
, namespaces
활용
2. Docker의 역할과 특징
- Docker는 컨테이너 기술을 사용자 친화적으로 구현한 도구
- 주요 기능
- Dockerfile
을 통해 이미지 정의 및 재사용 가능
- Docker Hub를 통한 중앙 저장소 제공
- docker run
, docker build
등 직관적인 CLI 명령어 지원
- 대체 도구 예시
- Podman, LXC, rkt, containerd, CRI-O
3. 컨테이너 오케스트레이션의 개념 및 필요성
- 컨테이너 오케스트레이션은 여러 컨테이너의 배포, 관리, 확장, 네트워킹 등을 자동화하는 기술
- Docker 단독 사용의 한계
- 수동 조절 필요 (트래픽 증가 시 컨테이너 수 조정)
- 장애 복구 기능 부재
- 상태 직접 관리 필요 (YAML 등 선언적 설정 파일 사용 불가)
- 대표 도구
- Kubernetes, Docker Swarm, Amazon ECS (Kubernetes가 가장 널리 사용됨)
결론
- Docker는 컨테이너 기술의 구현 도구로, Kubernetes와 같은 오케스트레이션 도구와 결합하여 자동 확장, 자가 복구, 선언적 인프라 문제를 해결
- 실무 팁
- 대규모 인프라 운영 시 Kubernetes 사용 권장
- Dockerfile
과 Docker Hub
를 통해 이미지 관리 자동화
- YAML 기반 선언적 설정 파일 사용으로 인프라 일관성 확보