⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Déployer sur Swarm

Note

Le mode Swarm est une fonctionnalité avancée pour la gestion d'un cluster de démons Docker.

Utilisez le mode Swarm si vous avez l'intention d'utiliser Swarm comme environnement d'exécution de production.

Si vous ne prévoyez pas de déployer avec Swarm, utilisez Docker Compose à la place. Si vous développez pour un déploiement Kubernetes, envisagez d'utiliser la fonctionnalité Kubernetes intégrée dans Docker Desktop.

Prérequis

  • Téléchargez et installez Docker Desktop comme décrit dans Obtenir Docker.

  • Suivez la conteneurisation d'une application dans la partie 2 de l'atelier Docker

  • Assurez-vous que Swarm est activé sur votre Docker Desktop en tapant docker system info, et en cherchant un message Swarm: active (vous devrez peut-être faire défiler un peu vers le haut).

    Si Swarm n'est pas en cours d'exécution, tapez simplement docker swarm init dans une invite de shell pour le configurer.

Introduction

Maintenant que vous avez démontré que les composants individuels de votre application fonctionnent comme des conteneurs autonomes et que vous avez montré comment la déployer à l'aide de Kubernetes, vous pouvez voir comment les faire gérer par Docker Swarm. Swarm fournit de nombreux outils pour la mise à l'échelle, la mise en réseau, la sécurisation et la maintenance de vos applications conteneurisées, bien au-delà des capacités des conteneurs eux-mêmes.

Afin de valider que votre application conteneurisée fonctionne bien sur Swarm, vous utiliserez l'environnement Swarm intégré de Docker Desktop directement sur votre machine de développement pour déployer votre application, avant de la transmettre pour qu'elle s'exécute sur un cluster Swarm complet en production. L'environnement Swarm créé par Docker Desktop est complet, ce qui signifie qu'il dispose de toutes les fonctionnalités Swarm dont votre application bénéficiera sur un vrai cluster, accessibles depuis le confort de votre machine de développement.

Décrire les applications à l'aide de fichiers de pile

Swarm ne crée jamais de conteneurs individuels comme vous l'avez fait à l'étape précédente de ce tutoriel. Au lieu de cela, toutes les charges de travail Swarm sont planifiées en tant que services, qui sont des groupes de conteneurs évolutifs avec des fonctionnalités de mise en réseau supplémentaires maintenues automatiquement par Swarm. De plus, tous les objets Swarm peuvent et doivent être décrits dans des manifestes appelés fichiers de pile. Ces fichiers YAML décrivent tous les composants et configurations de votre application Swarm, et peuvent être utilisés pour créer et détruire votre application dans n'importe quel environnement Swarm.

Vous pouvez maintenant écrire un fichier de pile simple pour exécuter et gérer votre application de tâches, l'image de conteneur getting-started créée dans la Partie 2 du tutoriel. Placez ce qui suit dans un fichier appelé bb-stack.yaml :

Note

La commande docker stack deploy utilise l'ancien format de fichier Compose version 3 utilisé par Compose V1. Le dernier format, défini par la spécification Compose n'est pas compatible avec la commande docker stack deploy.

Pour plus d'informations sur l'évolution de Compose, consultez Historique de Compose.

version: "3.7"

services:
  bb-app:
    image: getting-started
    ports:
      - "8000:3000"

Dans ce fichier YAML Swarm, il y a un objet, un service, décrivant un groupe évolutif de conteneurs identiques. Dans ce cas, vous n'obtiendrez qu'un seul conteneur (la valeur par défaut), et ce conteneur sera basé sur votre image getting-started créée dans la Partie 2 du tutoriel. De plus, vous avez demandé à Swarm de transférer tout le trafic arrivant sur le port 8000 de votre machine de développement vers le port 3000 à l'intérieur de notre conteneur getting-started.

Les services Kubernetes et les services Swarm sont très différents

Malgré le nom similaire, les deux orchestrateurs signifient des choses très différentes par le terme 'service'. Dans Swarm, un service fournit à la fois des installations de planification et de mise en réseau, créant des conteneurs et fournissant des outils pour leur acheminer le trafic. Dans Kubernetes, la planification et la mise en réseau sont gérées séparément, les déploiements (ou autres contrôleurs) gèrent la planification des conteneurs en tant que pods, tandis que les services sont uniquement responsables de l'ajout de fonctionnalités de mise en réseau à ces pods.

Déployer et vérifier votre application

  1. Déployez votre application sur Swarm :

    $ docker stack deploy -c bb-stack.yaml demo
    

    Si tout se passe bien, Swarm signalera la création de tous vos objets de pile sans aucune plainte :

    Creating network demo_default
    Creating service demo_bb-app

    Notez qu'en plus de votre service, Swarm crée également un réseau Docker par défaut pour isoler les conteneurs déployés dans le cadre de votre pile.

  2. Assurez-vous que tout a fonctionné en listant votre service :

    $ docker service ls
    

    Si tout s'est bien passé, votre service s'affichera avec 1/1 de ses répliques créées :

    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    il7elwunymbs        demo_bb-app         replicated          1/1                 getting-started:latest   *:8000->3000/tcp

    Cela indique que 1/1 des conteneurs que vous avez demandés dans le cadre de vos services sont opérationnels. De plus, vous voyez que le port 8000 sur votre machine de développement est transféré vers le port 3000 dans votre conteneur getting-started.

  3. Ouvrez un navigateur et visitez votre application de tâches sur localhost:8000 ; vous devriez voir votre application de tâches, la même que lorsque vous l'avez exécutée en tant que conteneur autonome dans la Partie 2 du tutoriel.

  4. Une fois satisfait, détruisez votre application :

    $ docker stack rm demo
    

Conclusion

À ce stade, vous avez utilisé avec succès Docker Desktop pour déployer votre application dans un environnement Swarm complet sur votre machine de développement. Vous pouvez maintenant ajouter d'autres composants à votre application et profiter de toutes les fonctionnalités et de la puissance de Swarm, directement sur votre propre machine.

En plus du déploiement sur Swarm, vous avez également décrit votre application sous forme de fichier de pile. Ce simple fichier texte contient tout ce dont vous avez besoin pour créer votre application dans un état de fonctionnement ; vous pouvez l'enregistrer dans un système de contrôle de version et le partager avec vos collègues, ce qui vous permet de distribuer vos applications à d'autres clusters (comme les clusters de test et de production qui viennent probablement après vos environnements de développement).

Références Swarm et CLI

Une documentation plus approfondie pour tous les nouveaux objets Swarm et les commandes CLI utilisés dans cet article est disponible ici :