TL;DR

  • Docker Desktop은 2016년부터 최소화된 가상 머신(VM) 커널과 가상 머신 모니터(VMM)를 사용하는 마이크로VM 기반임.
  • 2015년 당시 Docker Toolbox는 기능이 많고 자체 그래픽 인터페이스와 업데이트 절차가 있는 VirtualBox를 사용함.
  • Docker는 Mac과 Windows에서 네이티브 앱처럼 동작하도록 Mirage Unikernel 라이브러리를 활용해 앱에 내장할 수 있는 단일 목적의 최소형 VMM을 구축함.
  • Docker for Mac은 모든 플랫폼에서 루트 권한 없이 실행하고, 호스트와 VM 사이의 인터페이스를 제한하며, VPN과 네트워크 정책을 적용할 수 있게 함.
  • Docker의 마이크로VM 기술은 오늘날 Docker Sandboxes의 기반이며, 시간이 지나며 속도와 오버헤드, 보안이 지속적으로 개선되는 중임.

2015년 당시

  • 2015년 Docker에 합류했을 때 최신 기술은 Docker Toolbox였음.
  • Docker Toolbox는 기능이 많고 자체 그래픽 인터페이스와 업데이트 절차를 갖춘 VirtualBox를 사용했으며, Docker에는 필요한 수준을 넘어서는 구성이었음.

라이브러리형 VMM

  • Mac과 Windows에서 Docker가 구성 요소 묶음이 아니라 네이티브 앱처럼 느껴지도록, Mirage Unikernel 라이브러리를 활용해 앱에 내장할 수 있는 ‘라이브러리형 VMM’을 구축하기 시작함. 이 VMM은 단일 목적이며 최소화되고, 안전하고 빠른 구성이 목표임.
  • 첫 버전은 hyperkit이며, 가장 최근 버전은 Docker VMM임.
  • VM 커널과 루트 파일 시스템도 LinuxKit 프로젝트를 바탕으로 최소화된 구성이었음. 현재 버전은 더 슬림하게 줄어든 변형이지만 개념적으로는 같으며, containerd/nerdbox와 유사함.

2016년 Docker for Mac

  • 이후 Docker Desktop으로 이름이 바뀐 Docker for Mac은 다음을 가능하게 함.
  • 모든 플랫폼에서 루트 권한 없이 실행함. ‘리눅스 내부에서 루트리스’를 요구하지 않으며, 리눅스 커널 전체를 신뢰할 수 없는 대상으로 취급하므로 리눅스 보안 취약점(CVE)도 영향을 주지 않음.
  • 호스트와 VM 사이의 장치 인터페이스를 신중히 제한해 이해하고 감사하기 쉬운 최소 장치 구성을 제공함.
  • VPN과 연동하고 레지스트리 접근 관리(Registry Access Management) 같은 네트워킹 정책을 적용함.

현재

  • Docker의 마이크로VM 기술은 오늘날 Docker Sandboxes의 기반임. 마이크로VM을 사용하는 이유에 관한 설명도 제공됨.
  • 이 기술은 시간이 지나며 더 빨라지고 오버헤드가 낮아지며 보안성이 높아지는 중임.

더 읽을거리

  • 기술의 역사를 더 알아보려면 Communications of the ACM에 실린 「A Decade of Docker Containers」를 참고할 수 있음.

각주

  • 모든 구성 요소를 라이브러리로 만들어 정적 유니커널과 비슷한 프로세스에 링크하는 것이 목표였지만, 기술적 이유로 VM마다 호스트 프로세스 하나를 두는 구성이 여전히 합리적임.