요즘에는 가상머신(Virtual Machine, VM)보다 도커가 훨씬 더 많이 쓰이는데 그 이유가 뭐라고 생각하시나요?
크게 세 가지 이유
호스트 가상화 vs 하이퍼바이저 가상화 vs 컨테이너 - 출처
Virtual Machine
의 경우 호스트의 자원을 게스트 운영체제와 공유하기 위해 Hypervisor
를 사용하는데, Hypervisor
가 하드웨어(CPU, Network 등)를 가상화하면서 발생한 오버헤드
때문에 호스트의 자원을 100% 활용하지 못함.Docker
는 리눅스 컨테이너 가상화
기술을 사용하여 게스트 운영체제 없이 호스트 운영체제(커널) 위에 격리된 컴퓨팅 환경
을 운영하기 때문에 호스트의 자원을 거의 100% 사용할 수 있음.
Guest OS 용량 : 5GB ~ 20GB 정도
Minimal Guest OS (Base Image) : 50MB ~ 300MB정도
Docker
는 게스트 운영체제 전체를 따로 설치하지 않고, 운영체제 가상화에 필요한 최소한의 바이너리 파일과 서버 운영에 필요한 환경(프로그램 및 소스 코드)를 이미지로 만들어 사용하기 때문에 VM
에 비해 용량이 현격히 작고 가벼움.도커 이미지
는 베이스 이미지 위에 새로운 이미지를 계속해서 쌓아 올리는 레이어 구조
를 갖기 때문에 이미지의 중복을 최소화하여 Storage
에서 이미지가 차지하는 용량을 줄임.
Dockerfile
로 작성하여 손쉽게 공유 할 수 있음.도커 이미지
는 비교적 저용량의 파일로 되어있기 때문에 VM
에 비해 버전 관리
가 훨씬 쉽고, 도커 레지스트리(Docker Hub)
를 이용한 이미지 중앙 관리
및 체계적인 배포도 가능.도커 이미지
하나만 가지고 있으면 오토스케일링
기능과 연동해서 손쉽게 서버를 확장할 수 있음.도커 이미지
만 지우면 설치된 다양한 라이브러리와 패키지를 한 번에 지울 수 있어 테스트 환경
으로 사용하기 좋음.