Tutorial

Comment installer Docker Compose sur Debian 10

DebianDockerDebian 10

Introduction

Docker est un excellent outil pour automatiser le déploiement d'apps Linux à l'intérieur de conteneurs de logiciels, mais pour tirer pleinement parti de son potentiel, chaque composant d'une application doit s'exécuter dans son propre conteneur individuel. Pour les apps complexes comportant de nombreux composants, orchestrer tous les conteneurs pour qu'ils démarrent, communiquent et s'arrêtent ensemble peut rapidement devenir compliqué.

La communauté Docker a mis au point une solution populaire appelée Fig qui vous permet d'utiliser un seul fichier YAML pour orchestrer tous vos conteneurs et configurations Docker. Elle est devenue si populaire que l'équipe de Docker a décidé de créer Docker Compose en se basant sur la source Fig, qui est maintenant obsolète. Docker Compose permet aux utilisateurs d'orchestrer les processus des conteneurs Docker, y compris le démarrage, l'arrêt et la mise en place de liens et de volumes intra-conteneur.

Dans ce tutoriel, vous installerez la dernière version de Docker Compose pour vous aider à gérer des apps multi-conteneurs sur un serveur Debian 10.

Conditions préalables

Pour suivre cet article, vous aurez besoin de :

Note : même si les conditions préalables donnent les instructions pour installer Docker sur Debian 10, les commandes de Docker mentionnées dans cet article devraient fonctionner sur d'autres systèmes d'exploitation, à condition que Docker soit installé.

Étape 1 - Installation de Docker Compose

Bien que vous puissiez installer Docker Compose depuis les dépôts officiels Debian, il y a plusieurs versions mineures derrière la dernière version ; dans ce tutoriel, vous l'installerez donc depuis le dépôt GitHub de Docker. La commande qui suit est légèrement différente de celle que vous trouverez sur la page Versions. En utilisant le drapeau -o pour spécifier tout d'abord le fichier de sortie (plutôt que de rediriger la sortie), cette syntaxe évite de rencontrer une erreur de type “permission refusée” causée lors de l'utilisation de sudo.

Vérifiez la version en cours et, si nécessaire, mettez la à jour dans la commande qui suit :

  • sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Ensuite, nous fixerons les autorisations :

  • sudo chmod +x /usr/local/bin/docker-compose

Puis, nous vérifierons que l'installation a réussi en vérifiant la version :

  • docker-compose --version

Cela copiera la version que nous avons installée :

Output
docker-compose version 1.25.3, build d4d1b42b

Maintenant que nous avons installé Docker Compose, nous sommes prêts à créer un exemple “Hello World”.

Étape 2 - Exploiter un conteneur avec Docker Compose

Le registre public de Docker, Docker Hub, inclut une image Hello World pour les démonstrations et les tests. Elle illustre la configuration minimale requise pour faire fonctionner un conteneur à l'aide de Docker Compose : un fichier YAML qui appelle une image unique. Nous allons créer cette configuration minimale pour exploiter notre conteneur hello-world.

Tout d'abord, créez un répertoire pour le fichier YAML et accédez à celui-ci :

  • mkdir hello-world
  • cd hello-world

Puis, créez le fichier YAML :

  • nano docker-compose.yml

Placez les contenus suivants dans le fichier, enregistrez le fichier et quittez l'éditeur de texte :

docker-compose.yml
my-test:
 image: hello-world

La première ligne du fichier YAML est utilisée comme partie du nom du conteneur. La deuxième ligne précise l'image à utiliser pour créer le conteneur. En exécutant la commande docker-compose up, celle-ci cherchera une image locale grâce au nom spécifié, hello-world. Une fois cette manipulation effectuée, nous allons enregistrer et quitter le fichier.

Vous pouvez rechercher des images manuellement sur notre système avec la commande docker images :

  • docker images

Lorsqu'il n'y a pas du tout d'images locales, seuls les titres des colonnes s'affichent :

Output
REPOSITORY TAG IMAGE ID CREATED SIZE

Maintenant, toujours dans le répertoire ~/hello-world, exécutez la commande suivante :

  • docker-compose up

La première fois que vous exécutez la commande, s'il n'y a pas d'image locale nommée hello-world, Docker Compose l'extrait du dépôt public Docker Hub :

Output
Pulling my-test (hello-world:)... latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest . . .

Après avoir extrait l'image, docker-compose crée un conteneur, s'y connecte et exécute le programme hello, qui, à son tour, confirme que l'installation semble fonctionner :

Output
. . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 | . . .

Puis il imprime une explication de ce qu'il a fait :

Output
To generate this message, Docker took the following steps: my-test_1 | 1. The Docker client contacted the Docker daemon. my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. my-test_1 | (amd64) my-test_1 | 3. The Docker daemon created a new container from that image which runs the my-test_1 | executable that produces the output you are currently reading. my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it my-test_1 | to your terminal.

Les conteneurs Docker ne fonctionnent que tant que la commande est active, donc dès lors que hello a terminé de fonctionner, le conteneur s'arrête. Par conséquent, en examinant les processus actifs, les en-têtes de colonne apparaîtront, mais le conteneur hello-world ne sera pas répertorié car il n'est pas en cours d'exécution :

  • docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Vous pouvez voir les informations du conteneur, dont vous aurez besoin à la prochaine étape, en utilisant le drapeau -a. Cela montre tous les conteneurs, pas seulement ceux qui sont actifs :

  • docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1

Ceci affiche les informations dont vous aurez besoin pour retirer le conteneur lorsque vous en aurez fini avec lui.

Étape 3 - Suppression de l'image (facultatif)

Pour éviter d'utiliser inutilement de l'espace disque, nous allons supprimer l'image locale. Pour ce faire, nous devrons supprimer tous les conteneurs qui font référence à l'image en utilisant la commande docker rm, suivie par le CONTAINER ID ou le NAME. Dans l'exemple suivant, nous utiliserons le CONTAINER ID de la commande docker ps -a que nous venons d'exécuter. N'oubliez pas de remplacer le numéro d'identification de votre conteneur :

  • docker rm 06069fd5ca23

Une fois que tous les conteneurs qui font référence à l'image ont été retirés, nous pouvons retirer l'image :

  • docker rmi hello-world

Conclusion

Vous avez installé Docker Compose sur Debian 10, testé votre installation en lançant un exemple Hello World, et supprimé l'image de test et le conteneur.

Bien que l'exemple de Hello World ait confirmé votre installation, cette configuration de base ne montre pas l'un des principaux avantages de Docker Compose - être capable de faire monter et descendre un groupe de conteneurs Docker en même temps. Pour savoir comment utiliser Docker Compose de manière plus détaillée, consultez Comment installer WordPress avec Docker Compose.

Creative Commons License