Как упоминает BraveNewCurrency, единственная связь между ОС хоста и контейнером - это ядро.
Это одно из основных различий между докерами и «обычными» виртуальными машинами, отсутствие накладных расходов, все происходит непосредственно в ядре хоста.
Вот почему вы можете запускать в контейнере только дистрибутив / двоичные файлы на основе Linux. Если вы хотите запустить что-то еще, это возможно, но вам понадобится какая-то виртуализация внутри контейнера (qemu, kvm и т. Д.)
Docker управляет образами, представляющими файловую систему. Вы можете установить любой дистрибутив Linux или просто поставить двоичные файлы.
Действительно, для удобства примера мы часто полагаемся на базовые образы, но вы также можете создать свой образ без каких-либо библиотек / двоичных файлов дистрибутива. Таким образом, у вас будет действительно крошечный, но функциональный контейнер.
Еще один момент относительно дистрибутивов: поскольку ядро по-прежнему является ядром хоста, у вас не будет какого-либо конкретного модуля ядра / патчей, предоставляемых дистрибутивом.