본문 바로가기

CS Fundamental

[CS Fundamental] Docker와 VM의 차이점은?

https://aws.amazon.com/ko/compare/the-difference-between-docker-vm/

 


1) 도커와 VM의 차이점

도커와 가상 머신은 애플리케이션 배포에 사용되는 두 가지 기술입니다.
  소프트웨어 개발 수명 주기에서 배포는 최종 사용자를 위해 실행할 애플리케이션 코드를 준비합니다.
  도커는 개발자가 컨테이너라는 표준화된 단위로 사용하는 오픈 소스 플랫폼입니다.

- 컨테이너에는 라이브러리, 시스템 도구, 런타임을 비롯한 애플리케이션 코드와 해당 환경이 모두 갖춰져 있습니다.
  도커를 사용하면 어떤 시스템에서든 애플리케이션을 배포하고 규모를 조정하며 코드가 일관되게 실행되도록 할 수 있습니다.

- 반면 가상 머신은 물리적 머신의 디지털 사본입니다. 

  동일한 호스트 운영 체제에서 고유한 개별 운영 체제가 실행되는 여러 가상 머신을 보유할 수 있습니다.

  개발자는 가상 머신을 구성하여 애플리케이션 환경을 생성합니다.
  가상 머신에서 도커 컨테이너를 실행할 수도 있습니다. 


2) 가상화: 도커와 가상 머신

- 가상화를 통해 서버 및 네트워크와 같은 실제 리소스의 가상 인스턴스를 만들 수 있습니다.
  컴퓨팅에서 가상화를 사용하면 가상화된 구성 요소의 격리된 여러 인스턴스가 실제 구성 요소에서 작동할 수 있습니다.

- 예를 들어, 물리적 서버에서 여러 가상 서버를 실행할 수 있습니다.
  여러 가상 인스턴스에서 실제 리소스를 공유하면 활용도가 높아지고 운영 비용도 절감됩니다.
  가상화는 상당한 양의 애플리케이션 개발 및 배포의 기반입니다.


(1) 가상 머신
- 이름에서 알 수 있듯이 가상 머신은 전체 머신의 가상화를 제공합니다. 

  가상 머신은 CPU, 메모리, 네트워크 인터페이스 카드,
  USB 컨트롤러 및 사운드 카드와 같은 물리적 머신의 하드웨어 구성 요소를 에뮬레이션 합니다.

- 가상 환경에서 게스트 운영 체제와 여러 애플리케이션을 실행할 수 있습니다.
  가상 머신은 클라우드 기술을 가능하게 했으며, AWS에서는 가상 머신을 인스턴스라고 합니다.
  이러한 클라우드 인스턴스는 AWS에서 소유 및 유지 관리하며 API를 통해 사용할 수 있습니다.


(2) Docker
- VM을 사용하면 모든 하드웨어에서 가상 머신을 실행할 수 있습니다. 

  도커를 사용하면 모든 운영체제에서 애플리케이션을 실행할 수 있습니다.
  도커는 컨테이너라고 하는 격리된 사용자 공간 인스턴스를 사용합니다.

- 도커 컨테이너에는 고유한 파일 시스템, 종속성 구조, 프로세스 및 네트워크 기능이 있습니다.
  애플리케이션은 컨테이너 내부에 필요한 모든 것을 갖추고 있으며, 어디서나 실행할 수 있습니다.
  도커 컨테이너 기술은 기본 호스트 운영 체제 커널 리소스를 직접 사용합니다.