Quelle est la différence entre docker composer et kubernetes?

En plongeant dans Docker, Google Cloud et Kubernetes, et sans bien les comprendre tous les trois, il me semble que ces produits se chevauchent, mais qu’ils ne sont pas compatibles.

Par exemple, un fichier de composition de docker doit être réécrit pour qu’une application puisse être déployée sur Kubernetes.

Quelqu’un pourrait-il fournir une description brute de haut niveau de l’endroit où Docker, Docker Compose, Docker Cloud et Kubernetes se chevauchent et où l’un dépend de l’autre?

Docker :

Docker est la technologie de conteneur qui vous permet de conteneuriser vos applications. Docker est le cœur de l’utilisation des autres technologies.

Docker Compose:

Permet de configurer et de démarrer plusieurs conteneurs Docker. Ceci est principalement utilisé comme une aide lorsque vous voulez démarrer plusieurs conteneurs Docker et que vous ne voulez pas démarrer chacun séparément en utilisant docker run ... Docker compose est utilisé pour démarrer des conteneurs sur le même hôte.

Docker Swarm:

Docker Swarm permet d’exécuter et de connecter des conteneurs sur plusieurs hôtes. Docker swarm est un outil de gestion et d’orchestration de cluster de conteneurs. Il gère des conteneurs exécutés sur plusieurs hôtes et effectue des tâches telles que la mise à l’échelle, le démarrage d’un nouveau conteneur lorsque l’un d’entre eux se bloque, les conteneurs de mise en réseau …

Docker Swarm est un docker en production. Il s’agit de l’ outil d’orchestration de docker natif intégré au moteur Docker.

Le fichier de stack nommé docker swarm est très similaire à un fichier de composition de menu fixe.

Kubernetes:

Un outil d’orchestration de conteneurs développé par Google. L’objective de Kubernetes est très similaire à celui de l’essaim de Docker.

Docker Cloud:

Un service de docker d’entreprise payant qui vous permet de créer et d’exécuter des conteneurs sur des serveurs cloud ou locaux. Il fournit une interface utilisateur Web et un panneau de contrôle central pour exécuter et gérer les conteneurs tout en fournissant toutes les fonctionnalités du docker dans une interface Web conviviale.

Mettre à jour:

Docker cloud “partiellement” arrêté

Les services sur Docker Cloud qui fournissent la gestion des grappes d’applications, de noeuds et d’essaims seront fermés le 21 mai… les services automatisés de génération et de stockage du registre ne seront pas affectés et continueront d’être disponibles.

En plus de la réponse de @yamenk , j’aimerais append quelques détails qui pourraient aider les gens à comprendre Kubernetes.

Réponse courte:

  • docker-compose : est un outil qui prend un fichier YAML qui décrit votre application multi-conteneur et vous aide à créer , démarrer / arrêter , supprimer ces conteneurs sans avoir à taper plusieurs commandes docker ...
  • Kubernetes : est une plateforme de gestion des charges de travail et des services conteneurisés, qui facilite à la fois la configuration déclarative et l’automatisation. Quoi? Reading Continuez à lire …

Docker Compose

(à partir de la documentation): Compose est un outil permettant de définir et d’exécuter des applications Docker à conteneurs multiples. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services de votre configuration.

Compose a des commandes pour gérer l’ensemble du cycle de vie de votre application:

  • Démarrer, arrêter et reconstruire des services
  • Afficher l’état des services en cours d’exécution
  • Diffuser la sortie du journal des services en cours d’exécution
  • Exécuter une commande unique sur un service

Kubernetes

Kubernetes est un orchestrateur de conteneur comme Docker Swarm, Mesos Marathon, Amazon ECS, Hashicorp Nomad . Les orchestrateurs de conteneur sont les outils qui regroupent les hôtes pour former un cluster et nous aident à nous assurer que les applications:

  • sont à tolérance de pannes,
  • peut évoluer, et le faire à la demande
  • utiliser les ressources de manière optimale
  • peut découvrir d’autres applications automatiquement et communiquer entre eux
  • sont accessibles du monde extérieur
  • peut mettre à jour / annuler sans aucun temps d’arrêt.

Beaucoup de gens affirment que Kubernetes est difficile à apprendre. C’est parce qu’il résout une série de problèmes et que les gens essaient de comprendre sans connaître toutes les conditions préalables. Cela complique les choses. Commencez à assembler les pièces du puzzle en lisant les concepts / termes tels que:

  • Applications à 12 facteurs,
  • Binpacking automatique,
  • Auto-guérison,
  • Mise à l’échelle horizontale,
  • Découverte de service et équilibrage de charge,
  • Déploiement automatisé et rollbacks,
  • Secrets et gestion de la configuration,
  • Orchestration du stockage

Et parce qu’il y a beaucoup de choses différentes autour des conteneurs et de leur gestion, gardez un œil sur le paysage de Clound Native:

Version interactive ici: landscape.cncf.io/

entrer la description de l'image ici

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 des réseaux via les fonctionnalités du moteur de docker, de s’exécuter localement pour émuler la composition de service et à distance sur des clusters.

Kubernetes est une plate-forme d’orchestration de conteneurs, qui prend en charge l’exécution des conteneurs et améliore les fonctionnalités du moteur afin que les conteneurs puissent être composés et adaptés aux applications complexes (sorte de PaaS, géré par vous ou votre fournisseur de cloud). La fonction principale de Kubernetes consiste à découpler l’infrastructure des applications à l’aide de conteneurs. Elle est également ouverte aux autres moteurs Docker, par exemple, elle 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’API Docker Engine.

Maintenant, en fonction de vos besoins, du niveau de contrôle de l’infrastructure et du public cible, vous pouvez utiliser soit Kubernetes sur Baremetal, soit Azure ACS ou Google GKE, etc.

J’espère que cela a aidé 🙂 Cordialement