Каждая версия завязана на свой runtime и системные либы, а на системные либы завязана версия OS в образах.
Когда в проекте, например, 50 сервисов - каждый на своем runtime, своей OS, за несколько лет авторы уходят, и зависимостей уже никто не знает.
Часть проекта собирается gulp2, часть - gulp3, часть - gulp4, каждому нужна своя версия ноды, формат конфигов несовместим, еще будет 3 версии php, несколько версий openssl и libxml.
Я помню подобный проект - это авгиевы конюшни, директор разработки регулярно ночевал в офисе на коллах из-за внезапных падений в неожданных местах. Ловить баги было довольно интересно! Однажды встретилась довольно серьезная проблема в неподдерживаемой версии runtime, пришлось останавливать разработку и срочно обновлять кучу кода.
Нормально - это когда есть корпоративный baseline с определенной версией OS и runtinme, у каждого сервиса есть owner, который обязан обеспечить совместимость всех сервисов с общим набором библиотек, и общие библиотеки BC не ломают. А если надо поломать - например, для обновления PHP с 5 до 7, то вместе со всеми сервисами, которые их используют. Это работает, на крупных проектах большинство людей занимается именно обновлением сервисов под новые версии и рефакторингом .