Créer un fichier docker-compose.yml

Cette fois-ci, nous allons pratiquer 😀. Pour bien débuter, je vous propose de créer un nouveau dossier quelque-part sur votre ordinateur. Et dans celui-ci, nous mettrons le fichier docker-compose.yml.

Ce fichier doit absolument porter le nom docker-compose.yml (ou docker-compose.yaml).

Préparation

Nous pourrons appeler ce dossier exercice-docker-compose. Il nous servira à créer et à utiliser un fichier docker-compose.yml.

Créer le dossier

mkdir exercice-docker-compose

Créer le fichier dans le dossier exercice-docker-compose

cd exercice-docker-compose
touch docker-compose.yml

Version

Ouvrez le fichier docker-compose.yml via votre éditeur de texte préféré. Ensuite commencez par inscrire le numéro de la version.

version: '3'

Services

Après nous allons nous occuper des services.

version: '3'


services:

Comme nous l'avons dit dans la précédente leçon, un service représente une image.

Plusieurs subdivisions existent pour bien décrire ce que nous souhaitons faire. Commençons par y inscrire celles que nous utiliseront et puis on expliquera leur signification.

version: '3'

services:
  my_ubuntu:
    image: celtak/ubuntu-ping-ip
    container_name: celtak_ubuntu

Ces instructions nous indiquent, qu'un seul conteneur sera lancé. my_ubuntu est le nom du bloc. La ligne commençant par image indique l'image que nous utiliserons. Et enfin container_name est le nom donné à notre conteneur.

Exécuter docker-compose.yml

Pour exécuter notre docker-compose.yml, il faut se trouver dans le répertoire qui contient le fichier en question (s'il n'y a pas de fichier portant le nom docker-compose.yml ou docker-compose.yaml, cela ne fonctionnera pas).

Et on tape la commande qui suit.

docker-compose up

L'image va être téléchargée (si celle-ci n'est déjà pas présente dans notre machine). Le conteneur va être créé et ensuite automatiquement arrêté. Mais il sera bien présent (mais pas démarré).

docker ps -a
CONTAINER ID   IMAGE                   COMMAND   CREATED              STATUS                          PORTS     NAMES
751b69a76700   celtak/ubuntu-ping-ip   "bash"    About a minute ago   Exited (0) About a minute ago             celtak_ubuntu

Mais voilà, le conteneur s'est arrêté et nous n'avons pas pu interagir avec lui.

Pour y remédier nous allons ajouter deux lignes à notre fichier.

version: '3'

services:
  my_ubuntu:
    image: celtak/ubuntu-ping-ip
    container_name: celtak_ubuntu
    stdin_open: true
    tty: true

Sauvegardez le fichier et tapez de nouveau la commande qui suit.

docker-compose up

Le conteneur est lancé. Maintenant ouvrez un autre terminal et tapez la commande suivante.

docker ps

Nous voyons bien notre conteneur qui a été lancé et ne s'est pas arrêté 😃.

CONTAINER ID   IMAGE                   COMMAND   CREATED              STATUS              PORTS     NAMES
acbfc3b9b037   celtak/ubuntu-ping-ip   "bash"    About a minute ago   Up About a minute             celtak_ubuntu

Pour interagir directement avec celui-ci copier et coller la commande ci-dessous.

docker exec -it acbfc3b9b037 bash

Nous sommes bien entrés dans le conteneur.

Tapez exit pour sortir et cliquez sur la combinaison ctrl + C sur l'autre terminal pour arrêter le conteneur.

Détacher le conteneur du terminal

Il est possible de faire la même chose, mais en détachant le conteneur du terminal. Celui-ci tournera alors en arrière-plan. Il suffit pour cela d'ajouter l'option -d.

docker-compose up -d

En affichant la liste des conteneurs en cours, vous constaterez que celui-ci décrit dans le docker-compose.yml existe.

docker ps
PORTS     NAMES
b60d8c50bb8c   celtak/ubuntu-ping-ip   "bash"    3 seconds ago   Up 2 seconds             celtak_ubuntu

Arrêter

Pour arrêter le conteneur, on peut utiliser la méthode que l'on connaît déjà.

Mais nous pouvons procéder d'une autre façon.

docker compose stop

Pareillement pour supprimer notre conteneur, nous pouvons nous appuyer sur ce que nous avons déjà appris ou utiliser la commande qui suit.

docker compose rm

Voilà qui est fait 🙂.