Перша відмінність - між двигуном контейнера і контейнерним оркестром.
docker
це контейнерний двигун, він дозволяє створювати та запускати, як правило, не більше одного контейнера, локально на вашому ПК для цілей розробки.
docker-compose
- це утиліта Docker для запуску декількох контейнерів і дозволу їм ділитися об'ємами та мережами за допомогою функцій двигуна докер, працює локально, щоб імітувати сервісну композицію та віддалено на кластерах.
Kubernetes - це платформа для оркестровки контейнерів, вона піклується про запуск контейнерів та покращення функцій двигуна, щоб контейнери могли бути складені та масштабовані для обслуговування складних програм (на зразок PaaS, керований вами або постачальник хмарних послуг). Основна особливість Kubernetes полягає в тому, щоб від'єднати інфраструктуру від програми за допомогою контейнерів, а також вона відкрита для інших двигунів, які Docker, наприклад, вона може запускати контейнери з rkt або cri-o.
Хмара Docker - це також пропозиція PaaS, яка дозволить вам запускати та упорядковувати контейнери через docker
API двигуна.
Тепер, залежно від ваших потреб, рівня контролю над інфраструктурою та цільовою аудиторією, ви можете використовувати Kubernetes на бареметалі, або Azure ACS або Google GKE тощо.
Сподіваюсь, це допомогло :) З повагою