Comment installer Docker Compose sur Ubuntu 18.04

De Get Docs
Aller à :navigation, rechercher

Introduction

Docker est un excellent outil pour automatiser le déploiement d'applications Linux dans des 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 applications complexes avec de nombreux composants, orchestrer tous les conteneurs pour démarrer, communiquer et s'arrêter ensemble peut rapidement devenir compliqué.

La communauté Docker a proposé une solution populaire appelée Fig, qui vous permettait d'utiliser un seul fichier YAML pour orchestrer tous vos conteneurs et configurations Docker. Cela est devenu si populaire que l'équipe Docker a décidé de faire Docker Compose basé sur la source Fig, qui est maintenant obsolète.

Docker Compose permet aux utilisateurs d'orchestrer plus facilement les processus des conteneurs Docker, y compris le démarrage, l'arrêt et la configuration de la liaison et des volumes intra-conteneurs. Dans ce didacticiel, vous allez installer la dernière version de Docker Compose pour gérer les applications multi-conteneurs.

Conditions préalables

Pour suivre cet article, vous aurez besoin d'un serveur Ubuntu 18.04 avec les éléments suivants :

Note: This tutorial will guide you through installing Docker Compose v1, which uses docker-compose. Starting with Docker Compose v2, Docker has migrated towards using the compose CLI plugin command as documented in our latest Ubuntu 22.04 version of this tutorial, and away from the original docker-compose. While the installation differs, in general the actual usage involves dropping the hyphen from docker-compose calls to become docker compose. For full compatibility details, check the official Docker documentation on command compatibility between the new compose and the old docker-compose.


Étape 1 - Installation de Docker Compose

Although you can install Docker Compose from the official Ubuntu repositories, it is several minor versions behind the latest release, so you’ll install Docker Compose from Docker’s GitHub repository. The command below is slightly different than the one you’ll find on the Releases page. By using the -o flag to specify the output file first rather than redirecting the output, this syntax avoids running into a permission denied error caused when using sudo.

Vérifiez la version actuelle et si nécessaire, mettez-la à jour dans la commande ci-dessous :

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

Définissez ensuite les autorisations :

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

Ensuite, vous vérifierez que l'installation a réussi en vérifiant la version :

docker-compose --version

Cela imprimera la version que vous avez installée :

Outputdocker-compose version 1.29.2, build 5becea4c

Maintenant que Docker Compose est installé, vous êtes prêt à exécuter un exemple "Hello World".

Étape 2 - Exécution d'un conteneur avec Docker Compose

Le registre public Docker, Docker Hub, inclut une image Hello World à des fins de démonstration et de test. Il illustre la configuration minimale requise pour exécuter un conteneur à l'aide de Docker Compose : un fichier YAML qui appelle une seule image :

Tout d'abord, vous allez créer un répertoire pour le fichier YAML et vous y déplacer :

mkdir hello-world
cd hello-world

Ensuite, vous allez créer le fichier YAML :

nano docker-compose.yml

Placez le contenu suivant 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 spécifie quelle image utiliser pour créer le conteneur. Lorsque vous exécutez la commande docker-compose up, elle recherche une image locale du nom que vous avez spécifié, hello-world. Avec cela en place, vous allez enregistrer et quitter le fichier.

Vous pouvez regarder manuellement les images sur votre système avec la commande docker images :

docker images

Lorsqu'il n'y a aucune image locale, seuls les en-têtes de colonne s'affichent :

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

Maintenant, toujours dans le répertoire ~/hello-world, vous allez exécuter 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 référentiel public Docker Hub :

OutputPulling my-test (hello-world:latest)...
latest: Pulling from library/hello-world
c04b14da8d14: Downloading [==================================================>] c04b14da8d14: Extracting [==================================================>]  c04b14da8d14: Extracting [==================================================>]  c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
. . .

Remarque : Si vous rencontrez une erreur d'autorisation concernant le socket Docker, cela signifie que vous avez ignoré l'Étape 2 de Comment installer et utiliser Docker sur Ubuntu 18.04. Revenir en arrière et terminer cette étape permettra aux autorisations d'exécuter des commandes docker sans sudo.


Après avoir extrait l'image, docker-compose crée un conteneur, attache 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 |
. . .

Ensuite, il imprime une explication de ce qu'il a fait :

Output of docker-compose up. . .
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
. . .

Les conteneurs Docker ne s'exécutent que tant que la commande est active, donc une fois que hello a fini de s'exécuter, le conteneur s'est arrêté. Par conséquent, lorsque vous examinez les processus actifs, les en-têtes de colonne apparaissent, 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 sur le conteneur, dont vous aurez besoin à l'étape suivante, en utilisant le drapeau -a qui affiche 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                       drunk_payne

Cela affiche les informations dont vous aurez besoin pour supprimer le conteneur lorsque vous en aurez terminé.

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

Pour éviter d'utiliser de l'espace disque inutile, vous allez supprimer l'image locale. Pour ce faire, vous devrez supprimer tous les conteneurs qui font référence à l'image à l'aide de la commande docker rm, suivie de l'ID CONTAINER ou du NAME. Ci-dessous, vous utilisez l'ID CONTAINER de la commande docker ps -a que vous venez d'exécuter. Assurez-vous de remplacer l'ID de votre conteneur :

docker rm 06069fd5ca23

Une fois que tous les conteneurs faisant référence à l'image ont été supprimés, vous pouvez supprimer l'image :

docker rmi hello-world

Conclusion

Vous avez maintenant installé Docker Compose, testé votre installation en exécutant un exemple Hello World et supprimé l'image et le conteneur de test.

Bien que l'exemple Hello World ait confirmé votre installation, la configuration simple ne montre pas l'un des principaux avantages de Docker Compose : pouvoir monter et descendre un groupe de conteneurs Docker en même temps. Pour voir la puissance de Docker Compose en action, vous pouvez consulter cet exemple pratique, Comment configurer un environnement de test d'intégration continue avec Docker et Docker Compose sur Ubuntu 16.04 (note : cet article est pour Ubuntu 16.04 plutôt que 18.04)