Avec les applications «Revolution» de conteneurs, il a beaucoup plus grandi que d'être une base de données et un frontend. Les applications sont divisées en différents microservices et elles communiquent généralement entre elles via une API REST (généralement des charges utiles formatées JSON sur HTTP). Les conteneurs Docker sont idéaux pour ce type d'architecture. Vous pouvez emballer votre frontend `` microservice '' dans un conteneur Docker, la base de données entre dans une autre, et ainsi de suite. Chaque service parle à un autre sur une API REST prédéfinie au lieu d'être un monolithe écrit comme un seul logiciel.
Si vous devez implémenter une nouvelle fonctionnalité ou une fonctionnalité, E.G, un moteur d'analyse, vous pouvez simplement écrire un nouveau microservice pour cela et il consommerait les données via l'API REST exposée par les différents microservices de votre application Web. Et à mesure que votre fonctionnalité se développe avec le temps, cette liste de microservices se développera également avec elle.
Vous ne voulez pas déployer chaque conteneur individuel, le configurer puis configurer tout le reste pour lui parler également. Qui deviendra fastidieux avec même trois conteneurs. Docker-Compose vous permet d'automatiser le déploiement de plusieurs conteneurs.
Docker-Compose est l'un des outils les plus simples qui vous aide à transformer l'idée abstraite des microservices en un ensemble fonctionnel de conteneur Docker.
Systèmes distribués
Maintenant que nous avons séparé l'application Web en plusieurs conteneurs, il est peu logique de les garder tous sur un seul serveur (pire encore sur une seule machine virtuelle!) C'est là que des services comme Docker Swarm et Kubernetes entrent en jeu.
Docker Swarm vous permet d'exécuter plusieurs répliques de votre application sur plusieurs serveurs. Si votre microservice est écrit d'une manière qu'il peut évoluer «horizontalement», vous pouvez utiliser Docker Swarm pour déployer votre application Web sur plusieurs centres de données et plusieurs régions. Cela offre une résilience contre l'échec d'un ou plusieurs centres de données ou liens réseau. Cela se fait généralement à l'aide d'une sous-commande dans Docker, c'est-à-dire Docker Stack.
Le Pile de docker La sous-commande se comporte beaucoup plus comme la commande docker-compose et cela peut conduire à des idées fausses à quelqu'un qui utilise l'une ou l'autre des technologies.
Source de confusion
En termes d'utilisation et de flux de travail, les deux technologies fonctionnent très similaires, ce qui provoque une confusion. La façon dont vous déploiez votre application à l'aide de Docker Swarm ou Docker-Compose est très similaire. Vous définissez votre application dans un fichier YAML, ce fichier contiendra le nom de l'image, la configuration de chaque image ainsi que l'échelle (nombre de répliques) que chaque microservice devra rencontrer en déploiement.
La différence réside principalement dans le backend, où Docker-Compose déploie un conteneur sur un seul hôte docker, Docker Swarm le déploie sur plusieurs nœuds. De manière vague, il peut toujours faire la plupart des choses que Docker-Compose peut, mais elle l'échelle à travers plusieurs hôtes Docker.
Similitudes
Docker Swarm et Docker-Compose ont les similitudes suivantes:
Différences
Les quelques différences entre Docker Swarm et Docker-Compose:
Un cas d'utilisation pour Docker-Compose
Comme décrit ci-dessus, ce sont tous deux des outils complètement différents et chacun résout un problème complètement différent, donc ce n'est pas comme si l'un était une alternative pour l'autre. Cependant, pour donner aux nouveaux arrivants une idée de ce dont je parle, voici un cas d'utilisation pour Docker Compose.
Supposons que vous souhaitiez auto-héberger un blog WordPress sur un seul serveur. Le configurer ou le maintenir non pas quelque chose que vous voulez faire manuellement, donc ce que vous feriez à la place, c'est d'installer Docker et Docker-Compose sur vos VP, créez un fichier YAML simple définissant tous les différents aspects de votre pile WordPress, comme ci-dessous, :
Remarque: Si vous utilisez ce qui précède pour déployer un site WordPress, veuillez modifier tous les mots de passe en quelque chose de sécurisé. Mieux encore, utilisez Docker Secrets pour stocker des données sensibles comme les mots de passe, au lieu de les avoir dans un fichier texte brut.
Version: '3'
prestations de service:
DB:
Image: Mysql: 5.7
Volumes:
- db_data: / var / lib / mysql
redémarrer: toujours
environnement:
Mysql_root_password: SomewordPress
Mysql_database: wordpress
Mysql_user: wordpress
Mysql_password: wordpress
WordPress:
dépend de:
- db
Image: WordPress: Dernière
PORTS:
- "8000: 80"
redémarrer: toujours
environnement:
Wordpress_db_host: db: 3306
Wordpress_db_user: wordpress
Wordpress_db_password: wordpresspassword
Wordpress_db_name: wordpress
Volumes:
db_data:
Une fois le fichier créé et que Docker et Docker-Compose sont installés, tout ce que vous avez à faire est d'exécuter:
$ docker-compose up -d
Et votre site sera opérationnel. S'il y a une mise à jour, exécutez:
$ docker-compose
Ensuite, jetez les anciennes images Docker et exécutez la commande docker-compose up -d et les nouvelles images seront automatiquement tirées. Puisque vous avez les données persistantes stockées dans un volume Docker, le contenu de votre site Web ne sera pas perdu.
Quand utiliser Docker Swarm
Alors que Docker-Compose est plus un outil d'automatisation, Docker Swarm est destiné à des applications plus exigeantes. Des applications Web avec des centaines ou des milliers d'utilisateurs ou une charge de travail qui doivent être à l'échelle parallèle. Les entreprises avec une grande base d'utilisateurs et des exigences strictes SLA souhaiteraient utiliser un système distribué comme Docker Swarm. Si votre application se déroule sur plusieurs serveurs et plusieurs centres de données, les chances de temps d'arrêt en raison d'un CC ou d'un lien réseau affecté devient considérablement réduit.
Cela dit, j'hésite à recommander Docker Swarm pour les cas d'utilisation de la production parce que les technologies concurrentes comme Kubernetes sont sans doute plus appropriées pour cette tâche. Kubernetes est pris en charge nativement entre de nombreux fournisseurs de cloud et il fonctionne assez bien avec les conteneurs Docker afin que vous n'ayez même pas à reconstruire votre application pour profiter de Kubernetes.
J'espère que cette randonnée sur Docker et ses projets satellites a été informative et que vous êtes plus préparé à l'écosystème Docker.