본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

가상 머신(Virtual Machine, VM)은 하이퍼바이저가 물리 하드웨어를 흉내 내어 만든 가상 하드웨어 위에서 자체 운영체제와 응용 프로그램을 통째로 실행하는 독립된 컴퓨터 환경이다.

가상화는 다른 소프트웨어가 그 위에서 돌아가는 하드웨어나 소프트웨어를 흉내 내는 기술이고, 그렇게 흉내 낸 환경을 가상 머신이라 부른다. NIST는 운영체제와 그 응용을 가상 하드웨어 위에서 그대로 실행하는 방식을 전가상화(full virtualization)로 정리하고, 각 운영체제 인스턴스를 게스트 운영체제라 부른다.[1]

가상 머신마다 CPU, 메모리, 디스크, 네트워크 카드가 가상 장치로 주어지고, 그 위에 리눅스든 윈도우든 서로 다른 운영체제를 올릴 수 있다. 물리 서버 한 대를 여러 대처럼 나눠 쓰므로 자원 활용률이 높아지고, 가상 머신 단위로 복제·이동·백업하기 쉽다. 대신 게스트마다 운영체제 전체(커널, 드라이버, 라이브러리)를 싣기 때문에 메모리와 디스크를 많이 쓰고, 켤 때 운영체제 부팅 과정을 거쳐 시작이 느리다.

하이퍼바이저와 구성

편집 원본 편집

가상 머신은 하이퍼바이저(가상 머신 모니터, VMM) 없이는 동작하지 않는다. 하이퍼바이저가 가상 하드웨어를 보여 주고, 게스트가 물리 자원에 접근하는 것을 중재하며, 가상 머신끼리를 격리한다.

  • 베어메탈형(1형) - 하이퍼바이저가 호스트 운영체제 없이 하드웨어 위에 바로 설치된다. 서버 가상화에 쓰인다 → 베어메탈 가상화, Hyper-V
  • 호스트형(2형) - 윈도우·리눅스·macOS 같은 호스트 운영체제 위에 응용 프로그램처럼 설치된다. 개발·시험용 PC 가상화에 많이 쓰인다[1]

컨테이너와 비교

편집 원본 편집

컨테이너는 가상 하드웨어를 만들지 않고 호스트 운영체제의 커널 하나를 여러 응용이 공유하면서 프로세스·파일 시스템·네트워크만 분리한다. NIST SP 800-190은 가상 머신이 하이퍼바이저로 하드웨어 수준 격리를 제공하고 완전한 게스트 운영체제를 포함하는 반면, 컨테이너는 같은 운영체제 커널 인스턴스를 공유한다고 설명한다. 커널을 공유하기 때문에 컨테이너 사이의 격리는 가상 머신 사이보다 약하다.[2] 도커 문서도 가상 머신을 자체 커널과 드라이버를 가진 운영체제 전체로, 컨테이너를 필요한 파일만 가진 격리된 프로세스로 대비한다.[3]

구분 가상 머신 컨테이너
가상화 수준 하드웨어 수준 운영체제 수준
필요한 계층 하이퍼바이저 컨테이너 엔진(도커 등), 하이퍼바이저 불필요
커널 게스트마다 독립된 커널 호스트 커널 공유
운영체제 선택 호스트와 다른 운영체제 가능 호스트 커널과 같은 계열만
크기·오버헤드 수 GB, 게스트 운영체제 몫의 오버헤드 수십~수백 MB, 오버헤드 작음
시작 시간 운영체제 부팅이 필요해 수십 초~분 프로세스 시작 수준이라 수 초 이내
격리·보안 하이퍼바이저 경계로 강함 커널 공유로 상대적으로 약함
  • "컨테이너가 하드웨어 수준 가상화를 제공해 더 안전하다"는 거꾸로 된 설명이다. 하드웨어 수준 격리는 가상 머신의 특징이다.
  • "가상 머신은 호스트 커널을 공유하고 컨테이너는 독립 커널을 가진다"도 반대다.
  • 실무에서는 둘을 함께 쓴다. 클라우드에서 빌린 가상 머신 위에 컨테이너 여러 개를 올리는 구성이 흔하다.[3]
  1. ↑ 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.
  2. ↑ 「Application Container Security Guide」(NIST SP 800-190), NIST, https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf, 확인일: 2026-11-04.
  3. ↑ 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.