docker 컨테이너와 이미지

topics 400-인프라 & 아키텍처 401 Docker & Kubernetes
types 이론
tags #docker #container #image

Docker 컨테이너와 이미지

왜 Docker인가

가상머신(VM)은 무겁다. OS 전체를 올려야 하니까. Docker는 호스트 OS의 커널을 공유하면서 프로세스만 격리하기 때문에 가볍고 빠르다.

핵심: 어플리케이션과 실행 환경을 하나로 묶어서, "내 컴퓨터에서는 되는데..."라는 문제를 해결한다.

컨테이너와 이미지

docker-1751777737123.png

이미지 (Image)

  • 어플리케이션과 의존성(라이브러리, 설정 파일 등)을 하나로 묶은 패키지
  • immutable하다 (한번 만들면 변경 불가)
  • 레이어(Layer) 구조로 되어 있어서 용량 효율적
  • 이미지는 실행되지 않는다. 실행하면 컨테이너가 된다.

Dockerfile

  • 이미지를 만드는 레시피
  • 어떤 베이스 이미지를 쓰고, 어떤 파일을 복사하고, 어떤 명령어를 실행할지 정의
FROM nginx
COPY index.html /usr/share/nginx/html/index.html

컨테이너 (Container)

  • 이미지를 실행한 인스턴스
  • 격리된 환경에서 실행됨
  • 컨테이너끼리는 서로 영향을 주지 않음
  • 컨테이너를 삭제해도 이미지는 남아있음

비유하자면: 이미지는 클래스, 컨테이너는 인스턴스다.

Docker 아키텍처

도커는 클라이언트/서버 구조다.

  • Docker CLI: 사용자가 명령어를 입력하는 클라이언트
  • Docker Daemon: 실제로 컨테이너를 관리하는 서버 (백그라운드에서 돌아감)
  • Docker Registry: 이미지를 저장하고 공유하는 저장소 (Docker Hub 등)
사용자 → Docker CLI → Docker Daemon → 컨테이너 생성/관리
                            ↓
                      Docker Registry (이미지 pull/push)

관련 문서