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.
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é.
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 :
Outputdocker-compose version 1.25.3, build d4d1b42b
Maintenant que nous avons installé Docker Compose, nous sommes prêts à créer un exemple “Hello World”.
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 :
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 :
OutputREPOSITORY 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 :
OutputPulling 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
OutputCONTAINER 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
OutputCONTAINER 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.
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
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!