전체 목록
DevOpsMedium#405

Docker와 가상 머신(VM)의 주요 차이점은 무엇인가요?

#Docker#VM#컨테이너#가상화

답변 포인트

각 방식이 운영체제를 포함하는지, 격리와 실행 비용이 어떻게 다른지 떠올려보세요.

정답 및 해설

빠른 요약

애플리케이션을 격리된 환경에서 실행하기 위해 Docker 컨테이너와 가상 머신(VM)을 사용할 수 있지만, 작동 방식에는 근본적인 차이가 있습니다. ## 가상 머신 (Virtual Machine) 하드웨어 수준의 가상화를 수행하며, 각 VM은 독립적인 **게스트 운영체제(Guest OS)**를 포함합니다.

애플리케이션을 격리된 환경에서 실행하기 위해 Docker 컨테이너와 가상 머신(VM)을 사용할 수 있지만, 작동 방식에는 근본적인 차이가 있습니다.

가상 머신 (Virtual Machine)

하드웨어 수준의 가상화를 수행하며, 각 VM은 독립적인 **게스트 운영체제(Guest OS)**를 포함합니다.

  • 구조: 하드웨어 → 호스트 OS → 하이퍼바이저 (Hypervisor) → 게스트 OS → 애플리케이션
  • 장점:
    • 완전한 격리 제공 (보안성이 매우 높음)
    • 서로 다른 운영체제를 하나의 호스트에서 실행 가능
  • 단점:
    • 게스트 OS가 필요하므로 무겁고 리소스(CPU, RAM, 디스크) 소모가 큼
    • 부팅 속도가 느림 (OS 부팅 필요)

Docker 컨테이너 (Container)

OS 수준의 가상화를 수행하며, 호스트 OS의 커널(Kernel)을 공유합니다.

  • 구조: 하드웨어 → 호스트 OS → Docker Engine → 컨테이너 (애플리케이션 + 라이브러리)
  • 장점:
    • 매우 가볍고 리소스 효율적 (OS를 공유하므로)
    • 실행 및 부팅 속도가 매우 빠름 (프로세스 시작 수준)
    • "한 번 빌드하면 어디서든 실행(Build once, run anywhere)" 가능 (이식성)
  • 단점:
    • 호스트 OS 커널을 공유하므로 VM에 비해 격리 수준이 낮음
    • 호스트와 다른 커널을 사용하는 환경(예: Windows에서 Linux 전용 컨테이너)에서는 별도의 가상화 계층(WSL2 등)이 필요함

비교 요약

구분가상 머신 (VM)Docker 컨테이너
가상화 수준하드웨어 수준OS/커널 수준
격리 정도매우 높음높음 (커널 공유)
리소스 소모매우 큼 (OS 포함)매우 작음 (프로세스 단위)
부팅 속도느림 (분 단위)매우 빠름 (초 단위)
이식성낮음 (이미지 크기 큼)매우 높음 (이미지 작음)

관련 질문

같은 카테고리/태그 기준