
1. 가상머신(VM)이란?
가상머신(Virtual Machine, VM)은 하드웨어를 가상화하여 독립적인 운영체제를 실행하는 방식이다. 가상머신은 하이퍼바이저(Hypervisor)를 통해 호스트 OS 위에서 동작하며, 각 VM은 개별적인 OS를 포함하고 있다.
1.1 주요 개념
- 호스트 OS(Host OS): 실제 하드웨어에서 실행되는 운영체제
- 게스트 OS(Guest OS): 가상머신 내부에서 실행되는 운영체제
- 하이퍼바이저(Hypervisor): 가상화를 관리하는 소프트웨어 (예: VMware, VirtualBox, KVM)
- 가상화(Virtualization): 하나의 물리적 서버에서 여러 개의 VM을 실행하는 기술
1.2 VM의 특징
- 완전한 운영체제 환경 제공: 각 VM은 독립적인 OS를 가지므로, 애플리케이션 실행 환경을 격리할 수 있다.
- 높은 자원 사용량: 각 VM은 자체 OS를 실행해야 하므로 CPU, 메모리, 디스크 등의 자원을 많이 소비한다.
- 운영체제 독립성: 서로 다른 운영체제를 동시에 실행할 수 있다.
- 배포 속도가 느림: VM을 생성하고 운영체제를 설치하는 과정이 상대적으로 오래 걸린다.
2. Docker란?
Docker는 컨테이너 기반 가상화 기술로, 애플리케이션을 독립적인 환경에서 실행할 수 있도록 지원한다. VM과는 달리 OS 전체를 포함하지 않고, 호스트 OS의 커널을 공유하여 동작한다.
2.1 주요 개념
- 컨테이너(Container): 독립적인 애플리케이션 실행 환경
- 이미지(Image): 컨테이너 실행에 필요한 파일과 설정을 포함한 패키지
- Docker Engine: 컨테이너를 실행하고 관리하는 소프트웨어
- Docker Hub: 공개 및 사설 Docker 이미지를 저장하고 배포하는 플랫폼
2.2 Docker의 특징
- 가벼운 실행 환경: OS 전체를 포함하지 않고, 호스트 OS의 커널을 공유하므로 리소스 사용량이 적다.
- 빠른 배포 및 실행: 컨테이너는 몇 초 만에 실행할 수 있으며, CI/CD 환경에서 빠르게 배포할 수 있다.
- 환경 일관성 유지: 개발, 테스트, 운영 환경을 동일하게 구성할 수 있다.
- 운영체제 의존성: 컨테이너는 호스트 OS의 커널을 공유하기 때문에, Windows에서 Linux 컨테이너를 실행할 수 없다.