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éthodeInstallation 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 :

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

Étape 2 : modifiez les droits pour pouvoir exécuter le binaire :

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

Étape 3 : vérifiez la version installée :

1
# 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.

ExempleFichier de configuration Docker-Compose

1
-------------------------------------------------------------------------------------------------------------
2
version: '3' 
3
services: 
4
   web: 
5
      image: nginx 
6
      ports: 
7
      - "80:8080" redis: image: redis:alpine
8
   Redis :
9
    Image : redis : alpine
10
---------------------------------------------------------------------------------------------------------------

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

1
# 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 ».

1
#docker-compose ps

Cette commande liste tous le conteneurs (services) opérationnels et gérés par Docker Compose.

1
#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 ».