web-dev-qa-db-fra.com

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

Lorsque vous plongez dans Docker, Google Cloud et Kubernetes, sans les comprendre clairement, 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 approximative de haut niveau des endroits où Docker, Docker-Compose, Docker Cloud et Kubernetes se chevauchent et où l'un dépend de l'autre?

197
George Katsanos

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 de menu fixe. Ceci est principalement utilisé comme aide lorsque vous voulez démarrer plusieurs conteneurs de menu fixe et que vous ne voulez pas les lancer séparément à l'aide de docker run .... Docker compose est utilisé pour démarrer les conteneurs sur le même hôte .

Docker Swarm:

Docker swarm sert à exécuter et à connecter des conteneurs sur plusieurs hôtes . Docker swarm est un outil de gestion et d'orchestration de cluster de conteneurs. Il gère les conteneurs s'exécutant sur plusieurs hôtes et effectue des tâches telles que la mise à l'échelle, le démarrage d'un nouveau conteneur en cas de panne, la mise en réseau de conteneurs ...

Docker Swarm est docker en production. C’est l’outil d’orchestration natif docker intégré au moteur Docker. .

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

Kubernetes:

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

Docker Cloud:

Un service docker payant entreprise 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 commande central pour exécuter et gérer les conteneurs tout en fournissant toutes les fonctionnalités du menu fixe dans une interface Web conviviale.

Mise à jour:

nuage Docker "partiellement" interromp

Les services sur Docker Cloud qui fournissent la gestion des applications, des nœuds et des grappes d'essaims seront fermés le 21 mai ... Les services de constructions automatisées et de stockage de registre ne seront pas affectés et resteront disponibles.

292
yamenk

En plus de @ yamenk's answer, je voudrais ajouter ici quelques détails qui pourraient aider les gens dans leur cheminement pour comprendre Kubernetes.

Réponse courte:

  • docker-compose: est un outil qui prend un fichier YAML qui décrit votre multi-conteneur application et vous aide à créer , démarrer/arrêter , remove tous ces conteneurs sans avoir à saisir plusieurs commandes docker ... pour chaque conteneur.
  • Kubernetes: est une plate-forme permettant de gérer des charges de travail conteneurisées et services, ce qui facilite la configuration déclarative et l'automatisation. Quoi????? Continue de lire...

Docker Compose

(tiré 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 propose des commandes permettant de gérer l’ensemble du cycle de vie de votre application:

  • Démarrer, arrêter et reconstruire des services
  • Afficher le statut 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

(de Introduction à Kubernetes ): Kubernetes est un orchestrateur de conteneurs tel que , 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érants aux fautes,
  • 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 depuis le monde extérieur
  • peut mettre à jour/restaurer sans aucun temps d'arrêt.

Beaucoup de gens disent que Kubernetes est difficile à apprendre. C'est parce que cela résout une série de problèmes et que les gens essaient de comprendre sans connaître toutes les conditions préalables. Cela rend les choses compliquées. Commencez à assembler les pièces du puzzle en lisant des concepts/termes tels que ceux-ci. Ce processus vous aidera à comprendre le type de problèmes que Kubernetes essaie de résoudre:

  • Applications à 12 facteurs,
  • Binpacking automatique,
  • Mécanismes d'auto-guérison,
  • Mise à l'échelle horizontale,
  • Découverte de service et équilibrage de charge,
  • Les déploiements et les restaurations automatisés,
  • Déploiements Blue-Green/Déploiements Canaries
  • Gestion des secrets et de la configuration,
  • Orchestration de 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 Cloud Native:

Version interactive ici: landscape.cncf.io/

enter image description here

87
tgogos

la première distinction concerne le moteur de conteneur et son orchestrateur.

docker est un moteur de conteneur, il vous permet de construire et d'exécuter en général au plus un conteneur au maximum, localement sur votre PC à des fins de développement.

docker-compose est un utilitaire Docker permettant d'exécuter plusieurs conteneurs et de les laisser partager des volumes et la mise en réseau via les fonctions du moteur de docker, s'exécute localement pour émuler la composition du service 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 votre fournisseur de cloud). La principale fonctionnalité de Kubernetes consiste à découpler l'infrastructure des applications utilisant des conteneurs. Elle est également ouverte aux autres moteurs que 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 de moteur docker.

Désormais, en fonction de vos besoins, du niveau de contrôle de votre infrastructure et de votre public cible, vous pouvez utiliser Kubernetes sur baremetal, Azure ACS ou Google GKE, etc.

J'espère que cela a aidé :) Cordialement

8
Francesco Gualazzi

Si vous mettez en réseau des conteneurs au sein du même hôte, choisissez composition du menu fixe.

Si vous mettez en réseau des conteneurs sur plusieurs hôtes, recherchez kubernetes.

1
Aniket Alhat

Docker Compose:

Dans un fichier docker-compose.yml, chaque entrée peut éventuellement obtenir docker-compose pour créer une image. chaque entrée peut représenter un conteneur unique que nous voulons créer et chaque entrée définit les exigences en matière de réseau ou les ports.

Kubernetes:

Kubernetes s'attend à ce que toutes les images soient déjà construites et il y a un fichier de configuration par objet que nous voulons créer et nous devons configurer manuellement tous les réseaux.

Nous nous assurons donc que notre image est hébergée sur Docker Hub. Créez un fichier de configuration pour créer le conteneur et un fichier de configuration pour configurer la mise en réseau.

1
Daniel

Docker-Compose est un fichier de déploiement qui prédéfinit un ou plusieurs conteneurs avec son environnement, tels que les volumes, la mise en réseau, une commande à exécuter, etc.

Kubernetes, quant à lui, est un système qui orchestre les conteneurs de docker et autres microservices et les rend évolutifs et fiables sur plusieurs nœuds.

0
Yaniv Hakim