VM과 Docker의 차이 ,JVM과 가상머신(VMWare, KVM등) 차이
가상머신(Virtual Machine)
-
하드웨어 가상화 기술을 사용하여 Host 시스템에서 여러 개의 독립적인 가상머신을 실행
- 그 중 하이퍼바이저 기반의 가상화가 가장 많이 이용되었다.
- 하이퍼바이저: 논리적으로 분할된 공간에서 VM이라는 독립된 가상환경을 만들고, 호스트 시스템에서 VM에 깔린 게스트OD를 구동 및 모니터링 하는 역할
-게스트 OS를 구동 및 모니터링
-
각 VM은 자체 운영 체제와 커널을 갖고 있으며, 리소스를 많이 소비하게 된다.
-
VM은 가상 하드웨어에 직접 액세스, 호스트와 VM 간에 오버헤드가 크다는 의미
- 오버헤드: 호스트와 VM간의 통신 및 리소스 공유를 위한 추가 작업을 수행하는 데 필요한 시간과 처리 능력
-> 상대적으로 느리게 작동
- 서로 다른 운영체제 환경에서 실행해야 한느 어플리케이션이나 서버가 있는 경우에는 VM이 적합하다.

도커(Docker)
- 도커
컨테이너는 호스트 운영 체제의 리소스와 커널을 공유하므로 가볍고 시작/종료가 빠르다.
- 커널은 하드웨어 자원을 관리하고, 하드웨어와 프로세스 사이의 인터페이스 역할을 수행하는 OS 핵심 구성 요소 중 하나이다.
커널은 컴퓨팅 자원을 가상화하고, 이를 프로세스에 할당한다.
- 하나의 커널을 공유하고 있으므로 호스트 시스템에서도 컨테이너 내부의 프로세스를 볼 수 있다.
단일 운영 체제 커널에서 여러 응용 프로그램을 실행하려는 경우에 적합하다.
도커 컨테이너
- 응용 프로그램과 그 응용프로그램이 필요로 하는 모든 종속성을 포함하는 경량 가상화 패키지
- 실행 환경, 코드, 런타임, 시스템 도구 및 라이브러리가 포함되어 있으며, 독립적인 환경에서 응용 프로그램을 실행하는 데 사용된다.
하이퍼바이저의 역할
: 가상화 기술에서 핵심적인 역할을 하는 소프트웨어 레이어, 컴퓨터 하드웨어를 가상환경으로 분할하고 가상머신(VM)을 관리
- 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있게하는 소프트웨어
- 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링하는 중간 관리자 역할을 하는 것이 하이퍼바이저

출처
- Type 1 : 네이티브 하이퍼바이저 / 하이퍼바이저가 하드웨어 바로 위에서 실행되는 방식
- Xen, 마이크로 소프트 Hyper-V, KVM
- Type 2 : 호스트형 / 일반적인 소프트웨어처럼 호스트 OS 위에서 실행
- VMWare server, VMWare Workstation, Virtual Box
- 하드웨어 가상화
: 실제 컴퓨터 하드웨어를 여러 가상 머신으로 분할, 각 VM이 독립적인 환경으로 동작하도록 한다.
- 가상 머신 관리
- 리소스 관리
- 가상 머신 모니터링
- 보안과 격리
- 가상머신 스냅샷 : VM의 스냅샷을 만들어서 특정 시점의 상태를 보존
Java Virtual Machine(JVM)
- vm -> System Virtual Machine
- JVM ->
Process Virtual Machine

- 일반 프로그램은 운영체제 위에서 프로그램이 실행된다면, 자바 프로그램은 운영체제가 JVM을 실행시키면 JVM이 프로그램(클래스 파일)을 실행시킨다.
- 다만, 플랫폼 독립성에 따라 각 운영체제에 맞는 가상 머신을 설치해야 하므로 운영체제에 종속적이다.
- 자바 프로그램은 일반 프로그램보다 한 단계를 더 거쳐야 하므로, 상대적으로 실행 속도가 느리다는 단점이 있다.
출처 및 참고한 내용