Docker 대신 systemd-nspawn으로 컨테이너를 쓰는 이유
A whirlwind tour of systemd-nspawn containers
systemd-nspawn은 Linux namespaces 기반의 경량 컨테이너로, 쓰기 가능한 루트 파일시스템을 사용해 VM처럼 동작한다. VPS에서 중첩 가상화 없이 격리된 환경을 만들거나 GPU 같은 하드웨어를 공유할 때 유용하다. debootstrap, dnf, alpine-nspawn-install로 각 배포판의 루트 파일시스템을 만들고, UID/GID 네임스페이스로 격리해 부팅하는 과정을 단계별로 설명한다. Alpine은 16MB로 Debian 338MB, Fedora 507MB보다 훨씬 가볍다.
Alpine Linux는 경량 크기 덕분에 Docker 이미지에서 흔히 쓰이므로, Alpine Linux chroot를 만들어 보는 것도 괜찮겠다고 생각했다. 이런 작업에 보통 쓰이는 도구는 alpine-chroot-install인데, 그 기본 동작은 우리 용도에 끔찍하다.