서버를 공부하다 보면 꼭 한 번은 헷갈리는 개념이 있다. 바로 Docker와 가상머신(VM)이다.
둘 다 “하나의 컴퓨터를 나눠서 사용하는 기술”이라는 점에서는 비슷하다. 그래서 처음 보면 거의 같은 것처럼 느껴진다.
나도 처음에는 둘이 뭐가 다른지 잘 몰랐다. 그런데 구조를 한 번 이해하고 나면, 왜 둘을 다 사용하는지 확실히 보이기 시작한다.
핵심은 이거 하나다.
- 가상머신 = 컴퓨터를 통째로 나눔
- Docker = 프로그램만 나눔
이 차이 하나로 모든 것이 설명된다.

가상머신(VM)은 어떻게 다를까
가상머신은 하나의 컴퓨터 안에 여러 개의 “완전한 컴퓨터”를 만드는 기술이다.
각 가상머신은:
- 운영체제(OS)
- 프로그램
- 파일 시스템
을 모두 따로 가지고 있다.
예를 들어:
- VM 1 → Ubuntu
- VM 2 → Windows
- VM 3 → 또 다른 Linux
처럼 완전히 다른 컴퓨터처럼 동작한다.
그래서 안정성은 매우 높지만, 대신 무겁다.
Docker는 어떻게 다를까
Docker는 가상머신처럼 운영체제를 통째로 만들지 않는다.
대신 하나의 운영체제를 공유하면서, 프로그램만 따로 실행한다.
즉:
- 운영체제는 하나
- 프로그램만 컨테이너로 나눔
그래서 훨씬 가볍고 빠르다.
예를 들어:
- 웹서버 컨테이너
- DB 컨테이너
- 백엔드 컨테이너
이렇게 나눠서 실행한다.
비유하면 이렇게 이해하면 쉽다
가상머신은 “집을 여러 채 짓는 것”이다.
- 각 집은 완전히 독립됨
- 시설도 전부 따로 필요
반면 Docker는 “한 집 안에서 방을 나누는 것”이다.
- 기본 구조는 공유
- 방만 따로 사용
그래서 Docker가 훨씬 효율적이다.
속도와 자원 사용 차이
이 차이는 실제 성능에도 영향을 준다.
| 항목 | 가상머신 | Docker |
|---|---|---|
| 구조 | OS 포함 전체 | 프로그램만 |
| 속도 | 느림 | 빠름 |
| 용량 | 큼 (GB) | 작음 (MB~GB) |
| 실행 시간 | 느림 (부팅 필요) | 빠름 (즉시 실행) |
| 격리 | 완전 격리 | 부분 격리 |
그래서 요즘 서버는 Docker를 훨씬 많이 사용한다.
그럼 Docker가 무조건 좋은 걸까
그건 아니다.
Docker는 가볍지만, 완전히 독립된 환경은 아니다.
그래서:
- 서로 다른 OS가 필요할 때
- 완전히 분리된 보안 환경이 필요할 때
는 가상머신이 더 좋다.
예를 들어:
- Windows + Linux 동시에 사용
- 보안이 중요한 서버
같은 경우는 VM이 더 적합하다.
그래서 실제 서버에서는 어떻게 사용할까
실제 환경에서는 둘을 같이 쓰는 경우가 많다.
예를 들어:
- 물리 서버
- → 그 위에 VM
- → 그 안에 Docker
이렇게 사용한다.
즉:
- VM = 큰 단위 분리
- Docker = 작은 단위 분리
라고 보면 된다.
언제 무엇을 쓰면 좋을까
간단하게 정리하면 이렇다.
- 완전한 독립 환경 필요 → VM
- 빠르고 가볍게 여러 앱 실행 → Docker
특히 웹서버나 API 서버는 대부분 Docker를 사용한다.
한 줄로 정리하면
가상머신은 컴퓨터 자체를 나누는 기술이고, Docker는 프로그램을 나누는 기술이다. 그래서 VM은 더 안정적이고, Docker는 더 빠르고 효율적이다.