DevOps
Docker
다른 이름: 도커
정의
컨테이너 기반 가상화 플랫폼. 애플리케이션과 의존성을 이미지로 패키징, 격리된 컨테이너에서 실행. VM 대비 경량(공유 커널), 빠른 시작(초 단위). Dockerfile로 빌드, Docker Hub에서 공유. K8s, CI/CD 필수 도구
상세 설명
기술 스펙
- 컨테이너: 프로세스 격리 (namespace, cgroup)
- 이미지: 레이어 구조 (UnionFS, AUFS/OverlayFS)
- Dockerfile: FROM, RUN, COPY, CMD, ENTRYPOINT
- Docker Compose: 다중 컨테이너 오케스트레이션 (YAML)
- 볼륨: 데이터 영속화 (-v, --mount)
- 네트워크: bridge, host, overlay, macvlan
- Docker Hub: 공식 이미지 저장소 (nginx, redis, postgres)
실무 활용
- 마이크로서비스: 서비스별 독립 컨테이너
- CI/CD: 동일 환경 빌드/테스트/배포
- 개발 환경: "내 컴퓨터에서는 되는데" 문제 해결
- 클라우드: AWS ECS, GCP Cloud Run, Azure Container Instances
장점
- 경량: VM 대비 10배 빠른 시작, 적은 메모리
- 이식성: 한 번 빌드하면 어디서나 실행
- 격리: 의존성 충돌 없음, 보안 강화
- 버전 관리: 이미지 태그로 롤백 가능
단점 및 제약
- Linux 커널 공유: Windows/macOS는 VM 필요
- 영속성: 컨테이너 삭제 시 데이터 소실 (볼륨 필수)
- 보안: 루트 권한 컨테이너 위험
- 오버헤드: 네트워크 성능 약간 저하
호환성
Linux, Windows, macOS. 모든 클라우드 (AWS, GCP, Azure)
표준 정보
표준화 기구: Docker Inc., OCI (Open Container Initiative)
출시 연도: 2013년