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