강의/Docker & Kubernetes : 실전 가이드

[5] 가상 머신 VS Docker 컨테이너

JJIMJJIM 2025. 2. 5. 22:47
728x90
반응형
SMALL

 

가상 머신 VS Docker 컨테이너

 

 

 

Solution : Virtual Machines / Virtual Operating Systems ??

가상 머신(Virtual Machine)이란?

가상 머신은 '컴퓨터 속의 컴퓨터'라고 생각하면 됩니다.

 

작동 방식

- 호스트 컴퓨터(Windows/macOS/Linux) 위에서 실행
- 완전한 운영체제를 포함한 독립적인 가상 컴퓨터 생성
- 필요한 모든 도구와 라이브러리를 설치 가능


장점

1. 완벽한 환경 격리
2. 안정적인 동작 보장
3. 팀원간 동일 환경 공유 가능


단점

1. 높은 리소스 사용량
   - 각 VM ( Virtual Machine )마다 완전한 OS ( Operating System ) 필요
   - 메모리, CPU, 저장공간 많이 차지
2. 느린 성능
   - 여러 VM 실행 시 시스템 부하 큼
3. 관리의 어려움
   - 설정과 공유가 복잡
   - 배포 과정이 번거로움

- 완전한 Ubuntu OS 실행

- 수 GB 크기

- 부팅에 수 분 소요

 


도커 컨테이너란?

도커 컨테이너는 애플리케이션과 필요한 최소한의 환경만을 패키지화합니다.


작동 방식

- 호스트 OS 위에 도커 엔진 하나만 설치
- 컨테이너는 필요한 런타임과 라이브러리만 포함
- 호스트 OS의 커널 공유

  • 커널: 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 사이의 중개자 역할
  • 도커는 호스트 컴퓨터의 커널을 공유해서 사용
  • 각 컨테이너마다 새로운 운영체제를 설치할 필요가 없어 효율적
OS 커널이란?

운영체제의 가장 핵심적인 부분
주요 역할:

하드웨어 자원 관리 (CPU, 메모리, 입출력 장치)
프로세스 관리
파일 시스템 관리
보안 관리


도커의 경우 이 커널을 호스트 OS와 공유함으로써 자원을 효율적으로 사용할 수 있습니다

 


장점

1. 가벼운 리소스 사용
   - 최소한의 구성요소만 포함
   - OS 커널 공유로 효율적

   - Node.js 실행환경만 포함

   - 수백 MB 크기

   - 실행에 수초 소요


2. 빠른 실행 속도
   - 즉시 시작과 종료 가능

  • 가상머신처럼 부팅 시간이 필요 없음
  • 컨테이너는 프로세스처럼 즉시 실행되고 종료됨

   - 적은 시스템 부하

  • 호스트의 자원을 직접 사용하므로 성능 저하가 적음
  • 메모리 사용량이 가상머신보다 훨씬 적음


3. 쉬운 관리와 배포
   - 구성 파일로 환경 정의

  • Dockerfile로 모든 설정을 코드화
  • 환경 구성을 자동화하고 버전 관리 가능

   - 이미지 공유가 간단

  • Docker Hub 등을 통해 이미지를 쉽게 공유
  • 다른 개발자들과 정확히 같은 환경을 공유 가능

   - 빠른 환경 복제

  • 새로운 개발자 온보딩이 쉬움
  • 테스트 환경 구축이 빠름

 

 

 

 


도커가 선호되는 이유

1. 효율성

   - 필요한 것만 포함해 리소스 낭비 최소화


2. 이식성

   - 어디서든 동일하게 실행
   - 개발부터 배포까지 일관된 환경


3. 간편한 관리

   - 문서화된 환경 구성
   - 버전 관리 용이

 

 


결론

가상 머신도 환경 격리라는 목적을 달성할 수 있지만, 도커 컨테이너가 더 효율적이고 현대적인 솔루션을 제공합니다.

특히 개발 환경의 표준화와 배포 과정의 간소화가 필요한 현대 개발 환경에서는 도커의 장점이 더욱 부각됩니다.

 

 

 

 

 

 

참조

https://www.udemy.com/course/docker-kubernetes-2022

728x90
반응형
LIST