가상 머신
더 많은 작업
가상 머신(Virtual Machine, VM)은 하이퍼바이저가 물리 하드웨어를 흉내 내어 만든 가상 하드웨어 위에서 자체 운영체제와 응용 프로그램을 통째로 실행하는 독립된 컴퓨터 환경이다.
가상화는 다른 소프트웨어가 그 위에서 돌아가는 하드웨어나 소프트웨어를 흉내 내는 기술이고, 그렇게 흉내 낸 환경을 가상 머신이라 부른다. NIST는 운영체제와 그 응용을 가상 하드웨어 위에서 그대로 실행하는 방식을 전가상화(full virtualization)로 정리하고, 각 운영체제 인스턴스를 게스트 운영체제라 부른다.[1]
가상 머신마다 CPU, 메모리, 디스크, 네트워크 카드가 가상 장치로 주어지고, 그 위에 리눅스든 윈도우든 서로 다른 운영체제를 올릴 수 있다. 물리 서버 한 대를 여러 대처럼 나눠 쓰므로 자원 활용률이 높아지고, 가상 머신 단위로 복제·이동·백업하기 쉽다. 대신 게스트마다 운영체제 전체(커널, 드라이버, 라이브러리)를 싣기 때문에 메모리와 디스크를 많이 쓰고, 켤 때 운영체제 부팅 과정을 거쳐 시작이 느리다.
컨테이너는 가상 하드웨어를 만들지 않고 호스트 운영체제의 커널 하나를 여러 응용이 공유하면서 프로세스·파일 시스템·네트워크만 분리한다. NIST SP 800-190은 가상 머신이 하이퍼바이저로 하드웨어 수준 격리를 제공하고 완전한 게스트 운영체제를 포함하는 반면, 컨테이너는 같은 운영체제 커널 인스턴스를 공유한다고 설명한다. 커널을 공유하기 때문에 컨테이너 사이의 격리는 가상 머신 사이보다 약하다.[2] 도커 문서도 가상 머신을 자체 커널과 드라이버를 가진 운영체제 전체로, 컨테이너를 필요한 파일만 가진 격리된 프로세스로 대비한다.[3]
| 구분 | 가상 머신 | 컨테이너 |
|---|---|---|
| 가상화 수준 | 하드웨어 수준 | 운영체제 수준 |
| 필요한 계층 | 하이퍼바이저 | 컨테이너 엔진(도커 등), 하이퍼바이저 불필요 |
| 커널 | 게스트마다 독립된 커널 | 호스트 커널 공유 |
| 운영체제 선택 | 호스트와 다른 운영체제 가능 | 호스트 커널과 같은 계열만 |
| 크기·오버헤드 | 수 GB, 게스트 운영체제 몫의 오버헤드 | 수십~수백 MB, 오버헤드 작음 |
| 시작 시간 | 운영체제 부팅이 필요해 수십 초~분 | 프로세스 시작 수준이라 수 초 이내 |
| 격리·보안 | 하이퍼바이저 경계로 강함 | 커널 공유로 상대적으로 약함 |
- "컨테이너가 하드웨어 수준 가상화를 제공해 더 안전하다"는 거꾸로 된 설명이다. 하드웨어 수준 격리는 가상 머신의 특징이다.
- "가상 머신은 호스트 커널을 공유하고 컨테이너는 독립 커널을 가진다"도 반대다.
- 실무에서는 둘을 함께 쓴다. 클라우드에서 빌린 가상 머신 위에 컨테이너 여러 개를 올리는 구성이 흔하다.[3]
- ↑ 1.0 1.1 「Guide to Security for Full Virtualization Technologies」(NIST SP 800-125), NIST, https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-125.pdf, 확인일: 2026-11-04.
- ↑ 「Application Container Security Guide」(NIST SP 800-190), NIST, https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf, 확인일: 2026-11-04.
- ↑ 3.0 3.1 「What is a container?」, Docker Docs, https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/, 확인일: 2026-11-04.