la première distinction est entre le moteur de conteneur et l'orchestrateur de conteneur.
docker
est un moteur de conteneur, il vous permet de créer et d'exécuter généralement pas plus d'un conteneur au maximum, localement sur votre PC à des fins de développement.
docker-compose
est un utilitaire Docker pour exécuter plusieurs conteneurs et leur permettre de partager des volumes et la mise en réseau via les fonctionnalités du moteur Docker, s'exécute localement pour émuler la composition des services et à distance sur des clusters.
Kubernetes est une plate-forme d'orchestration de conteneurs, elle s'occupe de l'exécution des conteneurs et de l'amélioration des fonctionnalités du moteur afin que les conteneurs puissent être composés et mis à l'échelle pour servir des applications complexes (sorte de PaaS, géré par vous ou fournisseur de cloud). La principale fonctionnalité de Kubernetes est de dissocier l'infrastructure de l'application à l'aide de conteneurs, et elle est également ouverte pour d'autres moteurs que Docker, par exemple, il peut exécuter des conteneurs avec rkt ou cri-o.
Docker cloud est également une offre PaaS qui vous permettra d'exécuter et d'orchestrer des conteneurs via l' docker
API du moteur.
Maintenant, selon vos besoins, le niveau de contrôle de l'infrastructure et le public cible, vous pouvez utiliser Kubernetes sur baremetal, ou Azure ACS ou Google GKE, etc.
J'espère que cela vous a aidé :) Cordialement