전지적라온시점

도커(Docker)란 무엇인가? 본문

Development/Docker

도커(Docker)란 무엇인가?

최라온 2025. 11. 17. 22:48
728x90
반응형
SMALL

도커란?

도커(Docker)는 리눅스 컨테이너 기술(LXC)을 표준화·자동화한 애플리케이션 실행 플랫폼이다. 애플리케이션 실행 환경을 이미지로 패키징하고, 이를 컨테이너 단위로 배포·운영함으로써 환경 일관성과 배포 효율성을 극대화한다. DevOps, MSA 구조, CI/CD 파이프라인에서 사실상 기본 인프라 표준으로 채택된다.


- 컨테이너 기반 가상화의 본질

도커의 핵심은 OS 가상화이다.
하이퍼바이저 기반 VM은 각각 별도의 OS가 필요하지만, 컨테이너는 호스트 OS 커널을 공유하며 프로세스 단위로 격리된다.

  • Namespace: 프로세스를 논리적으로 분리(파일 시스템, PID, 네트워크 등)
  • cgroups(Control Groups): CPU, 메모리 등 자원 사용량 제한
  • UnionFS: 레이어 기반 파일 시스템으로 이미지 효율적 관리

이 구조 덕분에 컨테이너는 VM 대비 경량이며 실행 속도가 압도적으로 빠르다.


- 이미지(Image)의 구조적 특징

도커 이미지는 단순 패키지가 아니라 불변(Immutable) 레이어 구조로 설계되어 있다.

  • 상위 레이어는 변경 불가
  • 컨테이너 실행 시 Copy-on-Write 방식으로 쓰기 가능한 레이어를 생성
  • 동일한 이미지 레이어를 여러 컨테이너가 공유 가능 → 디스크 사용 최소화

→ 이 불변성 덕분에 배포·롤백·버전 관리가 안정적으로 수행된다.


- 컨테이너(Container)의 동작 구조

컨테이너는 “이미지 + 실행 설정(RunConfig)”으로 구성되며, 내부적으로는 단순 프로세스다.

  • PID 1로 실행되고 자체 프로세스 트리를 형성
  • 자체 파일 시스템·네트워크 네임스페이스 제공
  • 외부와 격리되지만 필요 시 port mapping, volume mounting 등으로 확장 가능

컨테이너는 스타트 → 종료 → 삭제 까지 lifecycle이 명확하고 관리가 용이하다.


- 도커의 등장 배경

도커는 애플리케이션 환경 문제를 근본적으로 해결하기 위한 표준으로 자리 잡았다.

  • 환경 종속성 문제
    • “내 로컬에서는 잘 되는데 서버에서는 안 된다” 문제 제거
  • 개발·운영 환경 표준화
    • 동일 이미지 기반으로 환경 불일치 제거
  • MSA 트렌드 확산
    • 각 서비스 단위를 하나의 컨테이너로 배치
  • CI/CD 자동화 요구 증가
    • 빌드 → 이미지 패키징 → 배포 → 롤백 일관성 확보

- 도커의 장점(핵심 요약)

  • 속도: 초단위 기동
  • 경량성: VM 대비 최소 자원
  • 이식성: 이미지 기반의 완전한 환경 재현
  • 확장성: MSA·오케스트레이션(Kubernetes)와 자연스럽게 결합
  • 운영 편의성: 패키징·버전 관리·롤백 체계화
728x90
반응형
LIST