В большинстве случаев контейнеры Docker, работающие на разных хостах, должны работать одинаково, независимо от версии ядра .. до тех пор, пока ядро соответствует минимальным требованиям.
Docker не меняет требования к программному обеспечению внутри контейнера Docker. Что это значит ... если у программного обеспечения внутри будут проблемы на старом ядре, то при запуске его на Docker .. на старом ядре, вероятно, также будут проблемы. (проверьте ответы на этот вопрос, они многое объясняют: Как Docker обрабатывает разные версии ядра? )
Относительно версии Docker, есть страница в Docker документах объяснение критических изменений, которые вы можете найти здесь: https://docs.docker.com/engine/breaking_changes/
A Docker изображение не указывает версию Docker, с которой оно было построено .. если нет критических изменений между версия, используемая для сборки, и pu sh, а другая пытается получить и запустить образ, он должен работать.
Кроме того, если вы ищете платформу, которая использует Docker и обеспечивает высокую доступность и сохраняющие состояние приложения в контейнерах. Есть много вариантов, я предлагаю вам взглянуть на Kubernetes (https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/)
Обычно такие платформы высокой доступности состоят из множества стандартизированных узлы (одно и то же ядро, одинаковые версии lib и Docker, одинаковое количество оперативной памяти и доступных процессоров и т. д.) для равномерного распределения контейнерных приложений по узлам ... и также для обеспечения легкого сопровождения (возможно, с использованием Ansible и аналогичных инструментов)