Docker를 이해하다 보면 자연스럽게 가상머신(Virtual Machine, VM)과의 차이가 궁금해집니다.
저도 처음엔 둘 다 격리된 환경에서 뭔가를 실행하는 기술이라는 정도로만 알고 있었는데 조금씩 구조를 들여다보니 환경을 다루는 방식 자체가 꽤 다르다는 걸 알게 됐어요.
이번 글에서는 제가 공부하면서 이해한 흐름대로 Docker와 VM을 구조와 사용 맥락 중심으로 정리해보려고 합니다.
1. 왜 Docker와 VM을 비교하게 될까
개발이나 데이터 작업을 하다 보면 여러 개의 서비스나 작업을 동시에 실행해야 하는 상황이 자주 생기더라구요.
그럴 때 항상 고민하게 되는 게 이런 부분이었어요.
- 서로 다른 작업이 서로 영향을 주지 않게 하고 싶고
- 실행 환경 차이로 생기는 문제는 줄이고 싶고
- 필요할 때 환경을 빠르게 만들었다가 지울 수 있으면 좋겠고
이런 요구를 해결하기 위해 등장한 대표적인 기술이 가상머신(VM)과 Docker라는 생각이 들었어요.
2. 가상머신(Virtual Machine)이란 무엇인가

가상머신(VM)은 하나의 물리 서버 위에서 여러 개의 독립적인 컴퓨터를 실행하기 위한 기술입니다.
여기서 말하는 컴퓨터는 단순히 프로그램 하나가 아니라, 운영체제(OS)를 포함한 완전한 실행 환경이에요.
처음 이 개념을 이해했을 때 “아, 진짜 컴퓨터를 여러 대 나눠 쓰는 느낌이구나”라는 생각이 들더라구요.

2.1 가상화와 하이퍼바이저의 역할
가상머신이 가능해지는 핵심은 가상화(Virtualization)입니다.
가상화는 하나의 물리 서버가 가진 CPU, 메모리, 디스크 자원을 여러 개의 가상 환경이 나눠 쓰도록 만드는 기술이에요.
이때 중요한 역할을 하는 게 하이퍼바이저(Hypervisor)입니다.
하이퍼바이저는:
- 물리 서버 자원을 관리하고
- 각 가상머신에 자원을 나눠주고
- 가상머신끼리 서로 영향을 주지 않도록 격리해줘요.
저는 이걸 “여러 대의 가상 컴퓨터를 관리하는 관리자”라고 이해하니까 좀 편하더라구요.
2.2 가상머신(VM)의 구조
가상머신 구조를 단순하게 보면 이렇게 정리할 수 있어요.
물리 서버
→ 하이퍼바이저
→ 가상머신(VM)
→ Guest OS
→ 애플리케이션
각 가상머신은 자기만의 운영체제를 가지고 있고 그 위에서 애플리케이션을 실행합니다. 그래서 VM 하나하나는
서로 완전히 독립된 컴퓨터처럼 동작해요.
2.3 가상머신의 특징
가상머신의 가장 큰 장점은 강한 격리라고 느꼈어요.
- 한 VM에서 문제가 생겨도 다른 VM에 영향이 거의 없고
- 서로 다른 운영체제를 동시에 실행할 수도 있고
- 보안적으로도 경계가 명확하더라구요.
다만 단점도 분명했어요. 운영체제까지 함께 실행하다 보니
- 리소스 사용량이 크고
- 생성이나 실행 속도가 느린 편이었어요.
그래도 여전히 VM은 서버 단위 격리가 필요한 환경이나 클라우드 인프라의 기본 단위로 많이 쓰이고 있더라구요.
3. Docker는 무엇이 다른가

| 구분 | 가상머신 (VM) | Docker 컨테이너 |
| 목적 | 독립된 컴퓨터 환경 제공 | 애플리케이션 실행 환경 제공 |
| 가상화 방식 | 하드웨어 가상화 | OS 수준 가상화 |
| 운영체제(OS) | 게스트 OS 포함 (무거움) | 게스트 OS 없음 (호스트 커널 공유, 가벼움) |
| 실행 단위 | 운영체제 단위 | 애플리케이션(프로세스) 단위 |
| 실행 속도 | 느림 (OS 부팅 필요) | 빠름 (프로세스 실행) |
| 리소스 사용 | 큼 | 적음 |
| 환경 생성/삭제 | 느림 | 빠름 |
| 환경 정의 방식 | 서버/OS 중심 | Image, Dockerfile 기반 |
| 관리 단위 | 서버 단위 관리 | 애플리케이션 단위 관리 |
| 활용 예 | 인프라 분리, 서버 단위 격리 | 개발·테스트·배치 작업, 실행 환경 표준화 |
Docker는 가상머신과 같은 목적을 가지지만, 환경을 다루는 방식 자체가 다르다. 가상머신은 운영체제를 포함한 환경을
통째로 가상화하는 반면, Docker는 애플리케이션 실행에 필요한 환경만 컨테이너에 포함하고 운영체제 커널은 호스트 OS의 것을 공유한다. 이 구조 덕분에 Docker는 불필요한 자원 사용을 줄이고 훨씬 가볍고 빠르게 실행할 수 있다.
정리해보면, 가상머신과 Docker는 모두 격리된 환경을 제공하지만 환경을 어디까지 포함해서 관리하느냐에서 차이가 있습니다.
가상머신은 운영체제를 포함한 완전한 컴퓨터 단위의 격리를 제공하고,
Docker는 애플리케이션 실행에 필요한 환경만을 컨테이너로 묶어 더 가볍고 빠르게 실행할 수 있는 구조를 가지고 있어요.
그래서 실무에서는 가상머신을 인프라 단위로 사용하고, 그 위에서 Docker로 애플리케이션을 실행하는 방식이
자연스럽게 자리 잡은 것 같다는 생각이 들었습니다.
'Data Engineer > Docker' 카테고리의 다른 글
| [Docker] Docker 란 무엇인가? (0) | 2026.01.30 |
|---|
HELLO WORLD
안녕하세요. 데이터로 말하는 분석가 모모입니다.
데이터를 구조화하고 분석하는 과정과 실무에 활용되는 도구 중심의 내용을 기록합니다.