Docker без Docker. А что, если собрать контейнер своими руками?
Есть идея для небольшой лабораторной.
Мы привыкли, что для запуска контейнера достаточно выполнить:
docker run --rm -it alpine sh
Но что, если вообще убрать Docker? И не заменять его на Podman или другой контейнерный движок, а попробовать самостоятельно воспроизвести то, что он делает.
Хочу взять минимальную файловую систему Alpine Linux, немного поэкспериментировать с chroot, Linux namespaces и cgroups, а затем попробовать собрать из всего этого собственный примитивный контейнер.
Заодно разобраться, почему процесс внутри контейнера может иметь PID 1, как работает изоляция файловой системы и почему ядро Linux при этом остаётся общим с хостом.
Конечно, полноценную замену Docker мы так не получим, но цель немного другая - посмотреть, как контейнеризация устроена изнутри, без готовых инструментов.
Если эксперимент получится интересным, оформлю всё в отдельную лабораторную с командами, пояснениями и схемами, как обычно.