Дистрибутив Linux не является его ядром. Требуется ядро, но дистрибутив работает на ядре.
Распространение - это просто особый способ распространения всех пакетов, необходимых для создания работающей системы.
Как правило, это включает в себя диспетчер пакетов и конкретные места, из которых извлекаются пакеты.
Поскольку существует много способов собрать работающую систему, каждый дистрибутив делает выбор необходимых базовых пакетов. Один дистрибутив может использовать basePackage v1.1
а другой - packageBase v7.8
. Может случиться так, что эти два пакета в целом предоставляют одинаковую функциональность, но работают немного по-разному, а это означает, что другим частям системы требуются настройки или конфигурация для работы с ними.
Там также могут быть тонкие различия в файлах конфигурации или макетах файловой системы.
Таким образом, создается дистрибутив, который выбирает пакеты, объединяет их, массирует, чтобы привести их в соответствие, и обычно устанавливает базовый набор пакетов поддержки, который можно ожидать в каждой системе.
Теоретически вы можете скомпилировать полностью универсальное ядро с каждым включенным модулем и затем поместить его в любой дистрибутив. Пока ядро обеспечивает правильные функции, требуемые пакетами, оно должно работать. На практике это намного сложнее, поскольку системные пакеты требуют определенных функций ядра и могут не работать, если они изменены, что часто случается с ядром Linux, но теория есть.
То, что делает Docker-контейнер одним распределением над другим, одинаково. Это то, как распределение внутри него связано и настроено.