когда докер был не так популярен использовали обычные vm
и все паковали туда
это лучше чем не иметь нужные зависимости.
Вопрос (я не стал уже его освещать, иначе статью бы до нездоровых размеров раздуло) ещё в том, что традиционные unix-системы построены на идеологии разделяемого кода, это их краеугольный камень и во многом именно то, что обеспечило их популярность и на серверах, и в среде разработчиков.
Сейчас же docker по сути является вещью, провоцирующей использовать подход как в экосистеме windows, когда каждое приложение таскает почти все нужные ему библиотеки с собой. Безусловно, всё это легко разруливается слоями, регулярным обновлением базовых слоёв, максимальным использованием одних и тех же слоёв в разных приложениях, но... если этого можно не делать, ни с кем не договариваться, ничего не настраивать, а просто пихать в свой пакет всё, что удобно данной конкретной команде разработчиков - так чего ж не запихать, кто помешает-то?