Docker Compose : les bases
Durée : 1 h 30
Prérequis :
Notion : Docker
Notion : Conteneur
Contexte :
Pourquoi utiliser Docker Compose alors que Docker existe déjà ? Docker affiche ses limites lorsqu’on souhaite créer et gérer les interactions entre plusieurs conteneurs. Docker Compose répond à ce besoin en permettant de créer et gérer des applications multi-conteneurs.
Concrètement, Docker compose est un outil qui s’appuie sur Docker pour gérer des applications complexes avec plusieurs conteneurs. Nous allons découvrir ici comment installer et configurer Docker Compose.
Introduction à Docker Compose
Méthode : Installation de Docker Compose
Prérequis : avoir installé Docker.
Pour installer Docker Compose sous un environnement Linux, exécutez les commandes suivantes.
Étape 1 : téléchargez la dernière version de Docker Compose :
# 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
Étape 2 : modifiez les droits pour pouvoir exécuter le binaire :
# sudo chmod +x /usr/local/bin/docker-compose
Étape 3 : vérifiez la version installée :
# docker-compose version
Le fichier de configuration Docker Compose
Le « docker-compose.yml » est le fichier de configuration indispensable au fonctionnement de Docker Compose. Dans ce fichier sont listés les conteneurs gérés par Docker Compose et sont définis leurs interactions.
La nomenclature « docker-compose.yml » est à respecter obligatoirement, il s’agit d’un standard sans lequel Docker Compose ne peut trouver le fichier de configuration. Ce fichier doit également respecter le format Yaml.
Exemple : Fichier de configuration Docker-Compose
-------------------------------------------------------------------------------------------------------------
version: '3'
services:
web:
image: nginx
ports:
- "80:8080" redis: image: redis:alpine
Redis :
Image : redis : alpine
---------------------------------------------------------------------------------------------------------------
Dans cet exemple, notre application est composée de deux services : un serveur web et une base de données. Cette architecture est reflétée dans le fichier de configuration où l’on déclare deux services : « Web » et « Redis ».
Pour chacun des services déclarés dans le bloc « Services », on peut détailler des paramètres tels que le nom de l’image utilisé pour créer le conteneur, le port exposé, etc.
Ici, le « docker compose configuration file » va créer le conteneur « Web » à partir de l’image « Nginx » et exposer le port 8080.
Les commandes Docker Compose
# docker-compose up
Cette commande permet de créer les ressources listées dans le fichier « docker-compose.yml ».
Exemple :
Output de la commande « docker-compose up » appliquée au fichier de configuration de l’exemple précédent :
L’option « -d » (comme avec Docker) permet de lancer les conteneurs en mode détaché.
Remarque :
Exécutez cette commande à partir du même répertoire où se trouve votre fichier « docker-compose.yml ».
#docker-compose ps
Cette commande liste tous le conteneurs (services) opérationnels et gérés par Docker Compose.
#docker-compose down
Cette commande permet d’arrêter et de supprimer les ressources crées par la commande « docker-compose up ».
Comparaison entre Docker Compose et Kubernetes
Tout comme Docker Compose, Kubernetes permet la gestion de plusieurs conteneurs et services.
Kubernetes se distingue par sa capacité à déployer des clusters et à gérer les conteneurs présents dans différents hôtes, contrairement à Docker Compose qui se limite à un seul hôte. Kubernetes apporte donc une dimension supplémentaire par rapport à Docker, en introduisant la notion de « cluster » et en apportant d’autres fonctionnalités telles que le « load balancing ».