도커(Docker)란? VM과의 비교

도커(Docker)는 리눅스의 리소스 격리 기술을 활용해 애플리케이션을 컨테이너 안에 배치시켜주는 플랫폼입니다. 좀 더 이해하기 쉽게 말하자면, VM(가상머신)과 비슷한 개념입니다. 그러나 VM보다 더 가볍고 빠르고 효율적이기 때문에 전 세계적으로 애플리케이션 개발 및 서버 운영에 많이 활용됩니다. 오픈 소스 프로젝트입니다.

도커

도커 컨테이너

도커의 핵심은 컨테이너(Container)입니다. 항만을 떠올려보세요. 네모나고 큰 컨테이너 상자들이 모여있잖아요. 컨테이너들은 같은 공간에 모여있지만 독립적으로 존재하며 각각의 내용물을 담고 있습니다. 서버에서도 컨테이너란 그런 것입니다.

 

도커는 컨테이너 환경에서 애플리케이션이 패키징되고 실행될 수 있는 기능을 제공합니다. 예를 들어, 컨테이너를 통해 WAS 서버, DB 서버를 구성할 수 있습니다. 컨테이너에는 애플리케이션을 실행하기 위해 필요한 모든 게 포함돼 있습니다. 컨테이너는 공유가 가능하고 온프레미스, 클라우드, 하이브리드 등 어떤 환경에서도 사용할 수 있습니다. 유연합니다. 

 

컨테이너 기술 자체가 도커에서 나온 건 아닙니다. 컨테이너는 리눅스 커널에 내장된 프로세스로 격리, 가상화 기술입니다. 도커는 이런 기술을 사용하기 쉽게 제공하고 있습니다.

도커 이미지

컨테이너 구성의 편리함을 보여주는 예시가 바로 도커 이미지입니다. 이미지를 빌드하는 방식으로 원하는 환경을 컨테이너에 쉽게 구성할 수 있습니다. 예를 들어, 서버를 구성할 때 DB가 필요하면 mysql, postgresql, mariadb 등의 도커 이미지를 사용하면 됩니다. 이미지에는 애플리케이션을 실행하기 위해 필요한 코드 또는 바이너리, 런타임, 종속성 및 기타 파일 시스템 등이 모두 포함됩니다.

 

이런 도커 이미지를 저장하는 공간을 도커 레지스트리라고 합니다. 그중에서도 도커 허브는 누구나 사용할 수 있는 공개 도커 레지스트리입니다. 사이트에 한번 들어가 보시면 감이 오실 겁니다.

도커 허브
도커 허브에 확인되는 이미지들

도커와 VM의 차이

도커는 흔히 VM과 비교됩니다. VM는 OS 위에 독립적인 환경을 구성하고 그 환경에 CPU, 메모리 등 리소스를 공유해주는 방식으로 사용됩니다. 예를 들어, VM에 서비스 운영 환경을 구축하고 그에 맞는 램(RAM)과 디스크, CPU를 할당해 서버로 활용할 수 있습니다.

 

도커 역시 그런 방식으로 활용 가능합니다. 그러면서도 도커는 VM보다 훨씬 빠르고 가볍습니다. VM과 달리 컨테이너는 CPU나 메모리가 딱 컨테이너가 필요한 만큼만 사용됩니다. 따로 OS 환경을 구동하기 위한 로드가 필요하지 않기 때문입니다. 성능 손실이 거의 없습니다. 예를 들어, 컨테이너의 크기는 MB 단위인 반면 VM의 경우 GB 단위입니다. 

 

컨테이너는 생산성도 높습니다. 컨테이너화된 애플리케이션은 한 번 만들면 어떤 환경에 가서도 실행할 수 있습니다.

반응형

댓글

Designed by JB FACTORY