Cloud Native/Docker

Docker 이론

lys4321 2026. 2. 23. 13:32

 

도커(Docker)란?

도커는 애플리케이션을 컨테이너라는 독립된 공간에서 실행하고 관리하는 데 사용되는 오픈소스 플랫폼

1. 탄생 배경 및 원인

원인 해결책 등장
개발/배포 환경 불일치로 인한 오류 및 의존성 재설치 문제 ➡️ VM(Virtual Machine)으로 환경 격리  VM의 문제: 실행이 느리고 OS 전체 포함으로 자원 낭비 심함
  ➡️ 컨테이너 기술 표준화  도커(Docker): 컨테이너 기술을 표준화한 도구 및 플랫폼

2. 도커의 핵심 제공 기능

  1. 환경 독립성 보장: '도커 이미지'라는 패키지에 애플리케이션과 모든 종속성을 담아, 어떤 호스트 환경에서도 동일하게 동작합니다.
  2. 경량화 및 고속 동작: VM과 달리 호스트 OS의 커널을 공유합니다. 덕분에 컨테이너는 매우 가볍고 시작 속도가 빠릅니다.

도커의 핵심 구성 요소

1. 도커 이미지 (Docker Image)

  • 정의: 컨테이너 생성을 위한 읽기 전용 템플릿이자 정적인 패키지입니다.
  • 특징: 계층적 구조(Layer)를 가지며, 변경 시 변경 사항이 있는 레이어만 교체하여 효율적입니다.
  • 생성: Dockerfile이라는 설정 파일을 통해 빌드합니다.

2. 도커 컨테이너 (Docker Container)

  • 정의: 도커 이미지를 기반으로 실행되는 독립적인 실행 환경입니다.
  • 특징: 실행 시 쓰기 가능 계층이 추가되어 데이터를 변경할 수 있지만, 컨테이너 삭제 시 해당 데이터는 기본적으로 사라집니다.

3. 도커 엔진 (Docker Engine)

도커 플랫폼의 핵심 프로세스로 세 가지로 구성됩니다.

  • CLI: 사용자가 명령을 입력하는 터미널 창.
  • Docker Daemon: 실제 이미지 빌드와 컨테이너 관리를 수행하는 서버.
  • REST API: CLI와 데몬 사이의 통신 인터페이스.

4. 도커 레지스트리 (Docker Registry)

도커 이미지를 저장하고 공유하는 저장소입니다.

  • Docker Hub: 누구나 사용할 수 있는 공용 저장소.
  • Private Registry: 기업 내부용 사설 저장소.

Dockerfile

도커 이미지 빌드 시, 사용하는 파일이며 패키지 설치, 환경 설정, 실행 명령 등을 명시하여 실행환경을 자동화하는 설정 파일


네트워크 및 저장소 관리

1. 도커 네트워크

네트워크 유형 설명 특징
Bridge  - 컨테이너들이 가상 스위치에 연결됨
 - 사설 네트워크로 연결
기본 모드, 포트 포워딩 필수
Host 호스트의 네트워크를 그대로 사용 가장 빠름, 격리성 없음
Overlay 여러 호스트 간 컨테이너 통신 클러스터(Swarm) 환경용

2. 데이터 영속성 (Storage)

관리 방식 설명 주요 용도
Volume 도커가 직접 관리하는 저장 영역 영구 데이터 저장, 공유 용이
Bind Mount 호스트 경로를 직접 연결 개발 단계 소스 코드 동기화
Storage Driver 이미지 레이어 및 파일시스템 관리 Overlay2 등 시스템 매커니즘

 


도커 클러스터링 및 오케스트레이션

여러 개의 컨테이너가 관계적으로 움직이는 환경을 관리하는 방법입니다.

1. 도커 컴포즈 (Docker Compose)

  • 정의: 여러 개의 컨테이너(예: Web 서버 + DB + Redis)를 하나의 YAML 파일로 정의하고, 단 한 번의 명령으로 전체 서비스를 실행/관리하는 도구입니다.
  • 주요 용도: 주로 로컬 개발 환경이나 단일 호스트에서의 테스트 및 개발 시 사용됩니다.
  • 특징: 복잡한 docker run 명령어를 일일이 입력할 필요 없이 파일 하나로 인프라를 코드화(IaC)할 수 있습니다.

2. 컨테이너 오케스트레이션 (Container Orchestration)

  • 정의: 수많은 컨테이너의 배포, 확장(Scaling), 로드 밸런싱, 장애 복구(Self-healing) 등을 자동화하는 기술입니다.
  • 주요 용도: 대규모 트래픽이 발생하는 운영(Production) 환경이나 MSA(Microservices Architecture) 구조에서 필수적입니다.
  • 주요 기능:
    • 스케줄링: 어느 서버에 컨테이너를 배치할지 결정
    • 오토 스케일링: 트래픽에 따라 컨테이너 수 조절
    • 서비스 디스커버리: 컨테이너 간의 통신 경로 자동 설정
  • 대표 도구
    • 쿠버네티스(Kubernetes): 가장 널리 사용되는 컨테이너 오케스트레이션 도구이며 고가용성과 환경 일관성을 제공한다.
    • Amazon ECS (Elastic Container Service): 아마존 환경에 적합한 컨테이너 오케스트레이션 도구 AWS의 서비스들과의 통합성이 좋은 것이 장점.
    • Docker Swarm: 도커에서 기본 제공하는 비교적 단순한 오케스트레이션 도구.

요약 비교

구분 도커 컴포즈 오케스트레이션 (K8s 등)
관리 대상 단일 호스트 내 여러 컨테이너 여러 호스트(클러스터) 내 컨테이너
주요 목적 개발 및 테스트 환경 구축 실제 서비스 운영 및 자동화
확장성 수동 확장 위주 자동 확장(Auto-scaling) 지원

 

'Cloud Native > Docker' 카테고리의 다른 글

Docker 명령어: network  (0) 2026.02.23
Docker 명령어: compose  (0) 2026.02.23
Docker 명령어: container  (0) 2026.02.23
Docker 명령어: image  (0) 2026.02.23
Docker 명령어: info  (0) 2026.02.23