La dockerisation a redéfini le processus de déploiement et d'automatisation dans l'industrie du logiciel. Depuis sa création, l'équipe Docker s'est continuellement efforcée de rendre le déploiement automatisé fluide. La technologie de conteneurisation ne permet pas seulement un développement rapide et efficace des applications, mais permet également de gagner du temps et d'épargner des efforts fastidieux. Des fonctionnalités inégalées telles que l'orchestration, la définition et l'exécution d'applications multi-conteneurs font de Docker un choix de prédilection pour les développeurs.
Conteneurs et images Docker
Alors que vous vous plongez dans la compréhension de Docker, il est essentiel de revoir les bases. Comprendre le fonctionnement de Docker peut être délicat si vous n'avez aucune expérience en la matière. Dans cette section, nous allons définir quelques concepts essentiels pour les débutants. Si vous pensez être familier avec ces concepts, n'hésitez pas à les ignorer et à passer à la section suivante. Vous pouvez également jeter un coup d'œil à notre guide complet qui explique les concepts fondamentaux de Docker.
-
Images Docker
Les images Docker sont une collection de fichiers en lecture seule. Une fois que vous avez créé des images Docker, vous ne pouvez pas les modifier, bien qu'il soit possible de les supprimer. Nous utilisons une image Docker pour créer un ou plusieurs conteneurs Docker selon nos besoins. Pour vérifier le nombre d'images en cours d'exécution sur votre système, utilisez la commande :
|
1 |
$docker images |
Lorsque vous récupérez des images depuis un registre distant comme Docker Hub, vous téléchargez des fichiers et des dossiers. Pour récupérer une image, utilisez la commande :
|
1 |
$docker pull (nom de l'image) |
-
Conteneurs Docker
Les images Docker sont le modèle des conteneurs Docker. Techniquement, un conteneur Docker est une instance d'une image Docker. Imaginez, si une image Docker est comme un parent, alors un conteneur Docker est l'enfant. Contrairement aux images Docker que vous pouvez créer une seule fois, vous pouvez créer plusieurs conteneurs à l'aide d'une seule image. Pour vérifier la liste des images en cours d'exécution sur votre système, utilisez la commande :
|
1 |
$docker ps |
Pour récupérer un conteneur, utilisez la commande suivante :
|
1 |
$docker pull (nom du the conteneur) |
-
Comment fonctionnent les images et les conteneurs Docker
Les images et conteneurs Docker travaillent main dans la main pour libérer le potentiel de Docker. Un seul conteneur est construit à l'aide de l'image Docker via la commande run. Lorsque vous créez un conteneur Docker, une nouvelle couche appelée Container Layer est créée. La couche nouvellement créée contient l'application et ses dépendances. Chaque conteneur que vous créez possède une Container Layer en lecture/écriture différente, et toutes les modifications apportées au conteneur Docker sont automatiquement répercutées sur la Container Layer. N'oubliez pas que si vous choisissez de supprimer un conteneur, vous perdrez également la Container Layer.
Dites bonjour à Docker Compose
Docker Compose est un outil de gestion de conteneurs qui vous permet de configurer et d'orchestrer tous vos conteneurs Docker dans un unique YAML de configuration. Le démarrage, l'arrêt et la création de liaisons et de volumes entre conteneurs sont tous facilités par cet outil.
-
Que fait Docker Compose ?
Pour faire simple, Docker Compose facilite les tâches complexes en éliminant les conflits et les problèmes d'organisation. Il permet aux utilisateurs de gérer différents conteneurs Docker de manière centralisée. En d'autres termes, au lieu d'avoir tous les services dans un grand conteneur, Docker Compose divise un service en plusieurs services afin que les utilisateurs puissent y accéder et les gérer sans effort.
Dans ce guide, nous vous guiderons à travers les étapes d'installation de la version actuelle de Docker Compose pour gérer des applications multi-conteneurs sur CentOS 7. Nous passerons également en revue quelques commandes de base dont vous avez besoin pour utiliser le logiciel avec succès.
-
Comment utiliser Docker Compose
L'utilisation de Docker Compose est extrêmement simple, même pour les débutants. Voyons le processus en trois étapes de Docker Compose :
1. Construire : Tout d'abord, construisez des images dans le Dockerfile selon les besoins de votre projet, ou récupérez-les depuis le registre.
2. Définir : Ensuite, vous devez définir tous les services composants dans le compose.yml fichier.
3. Exécuter: Après avoir défini les composants, il est temps de lancer l'exécution en utilisant la docker-compose commande.
Prérequis
Avant de procéder à l'installation de Docker Compose sur votre serveur CentOS, assurez-vous de disposer de :
- Un utilisateur non-root avec des privilèges sudo sur un serveur CentOS 7.
- Docker installé sur votre machine. Veuillez vous référer à ce tutoriel sur comment installer et utiliser Docker sur Ubuntu 18.04.
Vous êtes maintenant prêt. Ensuite, suivez les étapes ci-dessous pour installer Docker Compose sur CentOS 7.
Étape 1 : Installation de Docker Compose
Pour obtenir la version la plus récente de Docker Compose, suivez les instructions de la documentation Docker et téléchargez les binaires depuis le dépôt GitHub de Docker. Vérifiez que vous avez la dernière version du logiciel en exécutant la commande ci-dessous :
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Pour rendre le binaire exécutable, définissez les permissions ci-dessous :
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Ensuite, recherchez votre version pour vérifier si l'installation a réussi :
|
1 |
$docker-compose --version |
Le code ci-dessous affichera la version installée :
Vous pouvez ensuite exécuter un exemple “Hello World” en utilisant le Docker Compose que vous avez installé.
Étape 2 : Utiliser Docker Compose pour exécuter un conteneur
Il existe une image “Hello World” dans Docker Hub, le registre Docker public, qui peut être utilisée pour des démonstrations et des tests. Elle montre comment exécuter un conteneur à l'aide de Docker Compose avec une configuration minimale. Tout d'abord, vous devez créer un répertoire pour notre fichier YAML :
|
1 |
$mkdir hello-world |
Ensuite, déplacez-vous dans ce répertoire :
|
1 |
$cd hello-world |
Ensuite, à l'aide de votre éditeur de texte préféré, générez le fichier YAML. Dans ce tutoriel, nous utiliserons Vi:
|
1 |
$vi docker-compose.yml |
Appuyez sur i pour passer en mode insertion, puis saisissez ceci dans le fichier :
|
1 2 |
my-test: image: hello-world |
Dans le nom du conteneur, la première ligne sera incorporée. La deuxième ligne indique au programme quelle image il doit utiliser pour créer le conteneur. docker-composeup recherchera une image locale portant le nom hello-world pour vérifier s'il est disponible lorsque vous tapez la commande. Pour quitter le mode insertion, appuyez sur ESC. Ensuite, saisissez :x et appuyez sur ENTRÉE pour enregistrer et quitter le fichier. La commande docker images peut être utilisée pour vérifier manuellement la présence d'images sur votre machine :
|
1 |
$ sudo docker images |
Seuls les en-têtes de colonne apparaissent lorsqu'il n'y a aucune image locale :
Pour créer le conteneur, exécutez cette commande tout en restant dans le répertoire /hello-world:
|
1 |
$sudo docker-compose up |
Lorsque vous exécutez la commande pour la première fois et qu’il n’y a pas d’image locale nommée hello-world, il sera téléchargé depuis le dépôt Docker Hub :
Pour s'assurer que l'installation fonctionne, Docker Compose récupère l'image, construit un conteneur, s'y attache et exécute le hello programme :
Après cela, une description de ce qui a été fait s'affiche :
Lorsque hello a terminé sa tâche, le conteneur sera arrêté et la commande ne sera plus en cours d'exécution dans le conteneur. Les en-têtes de colonnes s'afficheront lors de la consultation des processus actifs. Cependant, le hello-world conteneur ne sera pas listé car il n'est pas en cours de fonctionnement actuellement :
|
1 |
$sudo docker ps |
Pour voir tous les conteneurs, et pas seulement les conteneurs actuels, utilisez le -a option :
|
1 |
$sudo docker ps -a |
Maintenant que vous avez essayé d’exécuter un conteneur, vous pouvez continuer pour apprendre certaines des commandes fondamentales de Docker Compose.
Étape 3 : Commandes Docker Compose
Pour vous aider à démarrer avec Docker Compose, cette section passera en revue les commandes de base fournies par l’outil docker-compose. docker-compose est une commande qui fonctionne répertoire par répertoire. En générant un répertoire pour chaque conteneur et un docker-compose.yml fichier par répertoire, vous pouvez exécuter de nombreux groupes de conteneurs Docker sur le même ordinateur.
Jusqu'à présent, vous avez exécuté Docker Compose par vous-même. Vous pouvez l'arrêter en appuyant sur Ctrl-C. Cela permet à la fenêtre du terminal d'afficher les messages de débogage. Cependant, il est conseillé d'exécuter docker-compose en tant que service lors d'un fonctionnement en production. L'option -d peut être utilisée comme un moyen simple d'y parvenir :
|
1 |
docker-compose up -d |
Maintenant, docker-compose passe en arrière-plan. Votre groupe de conteneurs Docker (qu'ils soient arrêtés ou en cours d'exécution) peut être géré avec la commande suivante :
|
1 |
$sudo docker-compose ps -a |
L'État d'un conteneur sera signalé comme Exited s'il est arrêté, comme le montre l'exemple ci-dessous :
Un conteneur en cours d'exécution affichera :
|
1 2 3 4 |
Nom Commande État Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Vous pouvez terminer tous les conteneurs Docker en cours d'exécution dans le même répertoire que le docker-compose.yml fichier que vous avez utilisé pour démarrer le groupe Docker :
|
1 |
$docker-compose stop |
Note: Si vous devez tout arrêter de manière plus forcée, docker-compose kill est également disponible.
Dans certains cas, les conteneurs Docker peuvent conserver leurs anciennes données à l'intérieur. Utilisez la commande rm pour supprimer tous les conteneurs de votre groupe de conteneurs si vous souhaitez repartir de zéro :
|
1 |
$docker-compose rm |
L'exécution de l'une de ces commandes depuis un autre répertoire que celui où le conteneur Docker et le fichier .yml sont situés entraînera un message d'erreur :
|
1 2 3 4 5 6 |
ERREUR: Impossible'de trouver un approprié configuration fichier dans ce répertoire ou tout parent. Êtes vous dans le bon répertoire? Pris en charge noms de fichiers: docker-compose.yml, docker-compose.yaml |
Dans cette section, nous avons abordé les bases de la manipulation des conteneurs avec Docker Compose. Comme indiqué, dans la section suivante, vous pouvez accéder au système de fichiers Docker et exécuter des commandes à partir d’une invite de commande à l’intérieur du conteneur si vous avez besoin d’un contrôle supplémentaire sur vos conteneurs.
Étape 4 : Accéder au système de fichiers du conteneur Docker
Il est possible d’exécuter une invite de commande dans un conteneur et d’accéder au système de fichiers du conteneur en utilisant docker exec, qui est un outil en ligne de commande. À titre d’exemple, exécutez “Hello World” et voyez combien de temps prend le docker exec commande à se terminer. Pour les besoins de ce tutoriel, l'image Docker Hub de Nginx peut être utilisée. Créez un nouveau répertoire nommé nginx et accédez-y :
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Vous devriez maintenant avoir un docker-compose.yml fichier, que vous pouvez ouvrir dans un éditeur de texte :
|
1 |
vi docker-compose.yml |
Ensuite, dans le fichier, ajoutez ce qui suit :
|
1 2 |
nginx: image: nginx |
Il est temps de fermer l'application. Pour démarrer le conteneur Nginx en arrière-plan, utilisez la commande suivante :
|
1 |
$sudo docker-compose up -d |
Docker Compose téléchargera l’image Nginx et exécutera le conteneur en arrière-plan. Pour continuer, vous devrez saisir l’ID DU CONTENEUR. Vous pouvez afficher tous les conteneurs en cours d’exécution avec la commande suivante :
|
1 |
$sudo docker ps |
Vous verrez ce qui suit :
Si vous vouliez modifier le système de fichiers à l’intérieur de ce conteneur, en utilisant docker exec, vous utiliseriez l’identifiant unique du conteneur (dans ce cas, f139d0d78ca7) pour ouvrir un shell dans le conteneur :
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Un terminal interactif peut être ouvert en utilisant l'option -t, tandis que /bin/bash fournit un shell bash au conteneur. Voici l’invite bash que vous verrez pour le conteneur après cela :
|
1 |
root@b86b6699714c:/# |
À l’intérieur de votre conteneur, vous trouverez une invite de commande. Redémarrer le conteneur écrasera toutes les modifications que vous avez apportées, à moins que vous ne travailliez dans un répertoire sauvegardé dans le cadre d’un volume de données. Si vous avez l’habitude de travailler avec les outils en ligne de commande Linux, vous devez savoir que la plupart des images Docker sont produites en utilisant les installations Linux les plus basiques.
Conclusion
Nous vous avons guidé à travers les étapes d'installation de la version actuelle de Docker Compose pour gérer des applications multi-conteneurs sur CentOS 7. La capacité de Docker Compose à démarrer et arrêter simultanément un grand nombre de conteneurs est impressionnante. Passer des modèles aux applications prend quelques minutes. Ainsi, si votre travail implique d'exécuter plusieurs conteneurs à la fois, s'en tenir à Docker Compose est une excellente option. Cependant, ce n'est pas une solution universelle. Vous pouvez également trouver de meilleures options, en fonction de vos besoins particuliers, par exemple, Kubernetes.
Pour explorer plus en détail la puissance de Docker Compose, vous pouvez consulter ces tutoriels de notre blog:
- Déploiement de Laravel, Nginx et MySQL avec Docker Compose
- Comment installer et configurer Docker Compose sur Ubuntu 20.04
Bonne informatique !






Commentaires
Aucun commentaire pour l'instant. Soyez le premier.