Docker에 대해 자주 묻는 질문 중 하나는 Docker가 VM(가상 머신)과 어떻게 다른지에 대한 것입니다.
클라우드 인프라와 관련하여 가상 머신은 많은 이점에 대한 표준이었습니다. 그러나 더 가볍고 경제적이며 확장 가능한 가상 머신의 대안이 있다면 어떨까요? 그것이 바로 도커입니다.
Docker는 분산 애플리케이션을 개발할 수 있는 컨테이너 기반 기술입니다. 이 블로그 게시물에서는 가상 머신과 Docker 컨테이너의 차이점에 대해 설명합니다.
목차
가상 머신이란 무엇입니까?
가상 머신은 컴퓨터와 똑같이 작동하는 시스템입니다.
간단히 말해서 하드웨어의 여러 개별 컴퓨터, 즉 하나의 컴퓨터에 있는 것처럼 보이는 것을 실행할 수 있습니다. 각 가상 머신에는 기본 운영 체제가 필요하며 그런 다음 하드웨어가 가상화됩니다.
도커란?
Docker는 컨테이너를 사용하여 애플리케이션을 훨씬 쉽게 생성, 배포 및 실행할 수 있는 도구입니다. 애플리케이션과 컨테이너 내부의 종속성을 바인딩합니다.
도커 배우기 쉽다!
도커 대 VM
이제 도커 컨테이너와 가상 머신의 중요한 차이점을 알려드리겠습니다. 글쎄, 중요한 차이점은 운영 체제 지원, 보안, 이식성 및 성능입니다.
그럼 이 용어들을 하나씩 논의해 보도록 하겠습니다.
운영 체제 지원
가상 머신과 Docker 컨테이너의 운영 체제 지원은 매우 다릅니다. 위의 이미지에서 각 가상 머신에는 호스트 운영 체제 위에 게스트 운영 체제가 있으므로 가상 머신이 무거워지는 것을 볼 수 있습니다. 반면 Docker 컨테이너는 호스트 운영 체제를 공유하므로 경량입니다.
컨테이너 간에 호스트 운영 체제를 공유하면 컨테이너가 매우 가벼워지고 몇 초 만에 부팅할 수 있습니다. 따라서 컨테이너 시스템을 관리하기 위한 오버헤드는 가상 머신에 비해 매우 낮습니다.
도커 컨테이너는 단일 운영 체제 커널을 통해 여러 애플리케이션을 실행하려는 상황에 적합합니다. 그러나 다른 운영 체제에서 실행해야 하는 애플리케이션이나 서버가 있는 경우 가상 머신이 필요합니다.
보안
가상 머신은 운영 체제를 공유하지 않으며 호스트 커널에 강력한 격리가 있습니다. 따라서 컨테이너에 비해 더 안전합니다. 컨테이너는 호스트 커널을 공유하기 때문에 많은 보안 위험과 취약점이 있습니다.
또한 도커 리소스는 네임스페이스가 아니라 공유되기 때문에 공격자는 하나의 컨테이너에도 액세스할 수 있으면 클러스터의 모든 컨테이너를 악용할 수 있습니다. 가상 머신에서는 리소스에 직접 액세스할 수 없으며 VM의 리소스 사용을 제한하기 위해 하이퍼바이저가 있습니다.
휴대성
Docker 컨테이너는 별도의 운영 체제가 없기 때문에 쉽게 이식할 수 있습니다. 컨테이너는 다른 OS로 이식될 수 있으며 즉시 시작할 수 있습니다. 반면 가상머신은 별도의 OS를 가지고 있어 컨테이너에 비해 이식이 어렵고 가상머신의 크기 때문에 이식하는 데에도 많은 시간이 소요된다.
다양한 플랫폼에서 애플리케이션을 개발하고 테스트해야 하는 개발 목적의 경우 Docker 컨테이너가 이상적인 선택입니다.
성능
가상 머신과 Docker 컨테이너를 비교하는 것은 서로 다른 목적으로 사용되기 때문에 공정하지 않습니다. 그러나 docker의 경량 아키텍처는 리소스 집약적 기능이 덜하므로 가상 머신보다 더 나은 선택입니다. 그 결과 가상 머신에 비해 컨테이너를 매우 빠르게 시작할 수 있고, 그 안에 있는 부하나 트래픽에 따라 리소스 사용량이 달라집니다.
가상 머신의 경우와 달리 컨테이너에 영구적으로 리소스를 할당할 필요가 없습니다. 컨테이너를 확장하고 복제하는 것도 운영 체제를 설치할 필요가 없기 때문에 가상 머신에 비해 쉬운 작업입니다.
결론
다음은 가상 머신과 Docker 컨테이너의 차이점을 정리한 표입니다.
가상 기기
도커 컨테이너
하드웨어 수준 프로세스 격리
OS 수준 프로세스 격리
각 VM에는 별도의 OS가 있습니다.
각 컨테이너는 OS를 공유할 수 있습니다.
몇 분 안에 부팅
몇 초 만에 부팅
VM은 몇 GB입니다.
컨테이너는 가벼움(KB/MB)
기성품 VM은 찾기 어렵습니다.
사전 구축된 도커 컨테이너를 쉽게 사용할 수 있습니다.
VM을 새 호스트로 쉽게 이동할 수 있음
컨테이너는 이동하지 않고 파괴 및 재생성
VM 생성 시간이 상대적으로 더 오래 걸립니다.
몇 초 만에 컨테이너 생성 가능
더 많은 리소스 사용량
리소스 사용량 감소
기사를 재미있게 읽었습니까? 세상과 함께 나누는 건 어떨까요?