One of the frequent questions asked about Docker is how it differs from VM (virtual machine).
VM보다 가볍고 경제적이며 확장 가능한 가상 시스템을 대체할 수 있는 방법이 Docker이다.
Docker는 분산 응용프로그램을 개발할 수 있는 컨테이너 기반 기술이다.
Virtual Machine 란?
하드웨어(하나의 컴퓨터)에 여러 개별 컴퓨터가 있는 것처럼 보이는 것으로 가상 시스템에는 기본 운영 체제가 필요하며 하드웨어가 가상화된다.
Docker 란?
컨테이너를 사용하여 응용 프로그램의 생성, 배포 및 실행을 쉽게 만드는 도구이다. 컨테이너 내에서 응용프로그램 및 종속성을 바인딩한다.
Docker vs VM?
중요한 차이점은 운영 체제 지원(Operating System Support), 보안(Security), 이식성(Portability) 및 성능(Performance)이다.
운영 체제 지원(Operating System Support)
가상 시스템과 도커 컨테이너의 운영 체제 지원은 매우 다르다.
위 이미지를 보면 각 가상 시스템의 게스트 운영 체제가 호스트 운영 체제 위에 있으므로 가상 시스템이 무거워지는 것을 알 수 있다.
반면에 도커 컨테이너는 호스트 운영체제를 공유하기 때문에 비교적 가볍다.
컨테이너 간에 호스트 운영 체제를 공유하면 컨테이너가 매우 가벼워지고 단 몇 초 만에 부팅이 가능하다.
따라서 컨테이너 시스템을 관리하는 데 드는 처리시간이 가상 시스템에 비해 매우 낮다.
도커 컨테이너는 단일 운영 체제 커널에서 여러 응용 프로그램을 실행하려는 경우에 적합하다. 그러나 서로 다른 운영 체제 환경에서 실행해야 하는 어플리케이션이나 서버가 있는 경우에는 VM이 적합하다.
보안(Security)
가상 시스템은 운영 체제를 공유하지 않기 때문에 호스트 커널에서 분리가 된다. 따라서 컨테이너에 비해 더 안전하다.
컨테이너는 호스트 커널을 공유하기 때문에 보안 위험과 취약점이 많다.
또한 도커 리소스가 공유되고 네임스페이스가 없기 때문에 공격자가 하나의 컨테이너라도 액세스할 수 있으면 클러스터의 모든 컨테이너를 이용할 수 있다.
가상 머신에서는 리소스에 직접 액세스할 수 없으며, 하이퍼바이저는 VM의 리소스 사용을 제한한다.
휴대성, 이식성(Portability)
도커 컨테이너는 별도의 운영 체제가 없기 때문에 easily portable하다. 컨테이너를 다른 OS로 포팅하고 즉시 시작할 수 있다.
반면 가상 머신에서는 별도의 OS가 있어 컨테이너에 비해 가상 머신의 포팅이 어렵고, 크기 때문에 가상 머신을 포팅하는 데에도 많은 시간이 소요된다.
다양한 플랫폼에서 어플리케이션을 개발하고 테스트해야 한다면 도커 컨테이너를 사용하는 것이 이상적인 선택이다.
성능(Performance)
가상 시스템과 도커 컨테이너를 비교하는 것은 공평하지 않다. 왜냐하면 둘은 다른 용도로 사용되기 때문이다.
그러나 도커의 경량 아키텍처는 리소스 집약도가 낮기 때문에 가상 머신보다 더 나은 선택일 수 있다.
도커는 가상 시스템에 비해 매우 빠르게 시작할 수 있는 컨테이너가 있으며, 리소스 사용량은 해당 컨테이너의 로드 또는 트래픽에 따라 달라진다.
가상 시스템과 달리 컨테이너는 영구적으로 리소스를 할당할 필요가 없다.
또한 컨테이너에 운영 체제를 설치할 필요가 없기 때문에 컨테이너를 확장하고 복제하는 것도 가상 시스템에 비해 간단하다.
References
'IT 기본지식' 카테고리의 다른 글
HTML과 web 브라우저, web 서버 (0) | 2022.08.24 |
---|---|
GraphQL과 REST의 차이점? (0) | 2022.08.23 |
Docker Container와 Image란 무엇인가? (2) | 2022.07.25 |
public/private IP란? | LAN, NAT, Mac Address (0) | 2022.07.24 |
Transport Layer : process-to-process (0) | 2022.07.24 |
댓글