VM & Docker

HelloPong·2025년 9월 30일

공부

목록 보기
33/39
post-thumbnail

🧱 VM(Virtual Machine)이란 무엇인가?

1. VM의 개념

VM(Virtual Machine, 가상머신)은 물리적인 컴퓨터 안에 가상의 컴퓨터를 만들어 사용하는 기술이다.
즉, 한 대의 서버 위에 여러 개의 독립적인 운영체제를 동시에 실행할 수 있도록 해준다.


2. 이해를 돕는 비유

집을 하나 가지고 있다고 가정해보자.

  • 이 집 안에 방을 여러 개 만들어두면, 각 방은 서로 독립된 공간처럼 사용할 수 있다.
  • 어떤 방에는 TV, 어떤 방에는 침대, 어떤 방에는 책상을 넣을 수 있듯이, VM도 각 공간마다 운영체제와 프로그램을 따로 설치할 수 있다.
  • 이렇게 만들어진 방이 바로 가상머신이고, 실제 집을 관리하면서 방을 나눠주는 역할을 하는 관리인이 하이퍼바이저(Hypervisor)다.

3. VM의 동작 방식

  1. 하드웨어(물리 서버) 위에 하이퍼바이저를 설치한다.
  2. 하이퍼바이저는 CPU, 메모리, 디스크 같은 자원을 나눠 각 VM에 할당한다.
  3. 각 VM은 할당받은 자원 위에 운영체제(Guest OS)를 설치하고, 그 위에서 애플리케이션을 실행한다.
  4. 결과적으로 하나의 물리 서버 위에 여러 대의 독립 서버가 동시에 돌아가는 효과를 얻을 수 있다.

4. 장점과 단점

장점

  • 독립성: 한 VM이 고장 나더라도 다른 VM에는 영향이 없다.
  • 범용성: 서로 다른 운영체제(예: Windows, Linux)를 동시에 실행할 수 있다.
  • 관리 편의성: VM 단위로 스냅샷, 백업, 마이그레이션이 가능하다.

단점

  • 무겁다: 운영체제를 포함하기 때문에 실행 속도가 느리고 자원 소모가 크다.
  • 이미지 용량 큼: VM 하나가 수 GB 단위의 용량을 차지한다.
  • 밀도 낮음: 같은 서버에서 구동할 수 있는 개수에 한계가 있다.

5. 한 줄 정리

VM은 컴퓨터 속에 또 다른 컴퓨터를 만드는 기술로, 보안성과 독립성이 강하지만 무겁고 느리다는 특징이 있다.

📦 Docker(도커)란 무엇인가?

1. Docker의 개념

Docker는 운영체제 레벨에서 실행 환경을 분리하는 가상화 기술이다.
하드웨어까지 가상화하는 VM과 달리, Docker는 호스트 OS의 커널을 공유하면서 애플리케이션 실행에 필요한 라이브러리와 설정만을 묶어서 실행한다.
이렇게 만들어진 실행 단위를 컨테이너(Container)라고 부른다.


2. 비유로 이해하기

앞서 VM을 “큰 집 안의 여러 개의 방”에 비유했다면, Docker는 조금 다르다.

  • 같은 집을 쓰되, 사람마다 자기만의 작은 가방을 들고 다니는 방식이다.
  • 가방 안에는 각자 필요한 물건(애플리케이션과 라이브러리)만 담겨 있고, 집에 있는 가구(운영체제 커널)는 모두가 같이 쓴다.
  • 그래서 훨씬 가볍고 빠르게 사용할 수 있다.

3. Docker의 동작 방식

  1. 이미지(Image): 애플리케이션 실행에 필요한 파일과 설정을 하나로 묶어둔 것.
  2. 컨테이너(Container): 이미지를 실제로 실행한 인스턴스.
  3. Docker Engine: 컨테이너를 관리하는 실행 엔진.
  4. 호스트 OS 커널 공유: 모든 컨테이너는 호스트 OS의 커널을 함께 사용한다.

4. 장점과 단점

장점

  • 가볍다: 운영체제를 포함하지 않아 시작 속도가 수 초 단위로 빠르다.
  • 이식성: 한 번 만든 이미지는 어디서든 같은 방식으로 실행된다.
  • 확장성: 여러 컨테이너를 쉽게 늘리고 줄일 수 있어 클라우드 환경에 최적화되어 있다.
  • 개발-운영 일관성: 로컬 개발 환경과 실제 배포 환경을 동일하게 맞출 수 있다.

단점

  • 커널 공유 한계: VM처럼 완전한 독립 운영체제 실행은 불가능하다.
  • 보안 격리 약함: 같은 커널을 쓰므로 VM보다 보안 격리 수준은 낮다.
  • 데이터 영속성 관리 필요: 컨테이너는 본질적으로 일시적이므로 볼륨, 외부 스토리지 관리가 필수다.

5. 한 줄 정리

Docker는 애플리케이션 단위로 가볍게 실행 환경을 격리하는 기술로, VM보다 빠르고 효율적이지만 보안성과 격리성은 상대적으로 낮다.

⚖️ VM vs Docker 비교, 왜 Docker가 대세인지, 그리고 면접 대비

1. VM과 Docker의 구조적 차이

구분VM (Virtual Machine)Docker (Container)
가상화 방식하드웨어 가상화 (Hypervisor 사용)운영체제(OS) 레벨 가상화
실행 단위Guest OS + 앱앱 + 라이브러리
커널각 VM마다 독립 커널호스트 OS 커널 공유
부팅 속도수 분수 초
자원 사용량무겁고 많은 자원 필요가볍고 효율적
격리성강력 (완전한 독립 환경)상대적으로 약함 (커널 공유)
활용 예시금융/보안 서비스, 여러 OS 필요 환경클라우드, MSA, CI/CD, DevOps

2. 왜 Docker가 많이 쓰이는가?

현대 소프트웨어 개발 환경은 빠른 배포, 자원 효율성, 클라우드 네이티브 아키텍처가 핵심이다.
Docker는 이 요구사항을 충족시키며 사실상 표준으로 자리 잡았다.

주요 이유

  1. 속도

    • VM은 운영체제 부팅이 필요해 수 분 소요
    • Docker는 애플리케이션만 실행하므로 수 초 만에 기동
  2. 효율성

    • 같은 서버에서 더 많은 서비스를 띄울 수 있음
    • 서버 자원을 아낄 수 있어 비용 절감 효과
  3. 이식성

    • Docker 이미지 한 번 빌드 → 어디서나 동일 실행 (로컬, 테스트, 운영)
    • "개발 환경에서는 잘 되는데 운영에서는 안 돼요" 문제 해결
  4. 확장성

    • Kubernetes 같은 오케스트레이션 도구와 결합해 자동 확장, 롤링 업데이트 가능

3. 언제 VM을 쓰고, 언제 Docker를 쓸까?

  • VM 선호 상황

    • 서로 다른 OS 실행 필요 (예: Windows와 Linux 동시 실행)
    • 높은 보안·격리 수준이 필요한 환경 (예: 금융, 공공망)
    • 커널 단에서 제약 없는 환경이 필요한 경우
  • Docker 선호 상황

    • MSA(Microservices Architecture) 기반 서비스
    • 빠른 배포와 확장이 중요한 클라우드 서비스
    • DevOps 환경, CI/CD 파이프라인

4. 면접 대비 Q&A

Q1. VM과 Docker의 차이를 설명해보세요.

  • VM은 하드웨어를 가상화하여 각 VM마다 운영체제를 포함해 완전한 독립성을 제공한다.
  • Docker는 운영체제 커널을 공유하고 애플리케이션 단위로 격리하기 때문에 가볍고 빠르다.

Q2. Docker가 VM보다 유리한 점은 무엇인가요?

  • VM보다 훨씬 가볍고, 기동 속도가 빠르며, 이식성과 확장성이 뛰어나다.
  • DevOps와 클라우드 네이티브 아키텍처에 적합하다.

Q3. Docker 대신 VM을 사용하는 경우는 언제인가요?

  • 보안 격리가 매우 중요한 환경, 또는 서로 다른 OS를 동시에 실행해야 할 때는 VM이 더 적합하다.

5. 한 줄 정리

  • VM = 무겁지만 완전한 독립 환경 제공
  • Docker = 가볍고 빠른 애플리케이션 실행 환경 제공
  • 요즘은 클라우드·MSA·CI/CD 환경에 맞춰 Docker가 사실상 표준으로 자리 잡았다.

0개의 댓글