• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/10/2024

Manipulez Docker

Docker est installé. Liam apprécie la rapidité avec laquelle vous avez réalisé l’opération. Il aimerait désormais que vous lui fassiez une petite présentation des fonctionnalités qui composent Docker, pour qu’il puisse utiliser ces éléments techniques lors de la prochaine réunion avec les investisseurs…

Découvrez les commandes Docker

Dans cette section, nous allons faire un tour d’horizon des commandes Docker et leurs rôles respectifs.

Cela nous permettra de mettre en lien la terminologie Docker avec des opérations concrètes et également de découvrir deux nouvelles entités logiques ayant un rôle central dans un environnement Docker:

  • Les volumes: Ils sont utilisés pour stocker des données de manière persistante, voire pour partager des données entre plusieurs conteneurs.

  • Les networks: Ils permettent la communication réseau entre les conteneurs et avec l’extérieur. Les networks sont associés à un type, chacun permettant de créer différentes topologies réseau.

Voyons ensemble comment manipuler ces éléments avec le client Docker.

Manipulez les commandes Docker

Docker offre une variété de commandes pour gérer les images, les conteneurs, les volumes et les networks.

Voici un aperçu des principales commandes :

Dans cette vidéo, nous avons vu les grandes catégories de commandes :

  • Les commandes relatives à la manipulation des images, notamment :

    • Lister les images :docker images

    • Télécharger une image :docker pull <image>

    • Supprimer une image :docker rmi <image>

  • Les commandes relatives à la manipulation des conteneurs

  • Les commandes relatives à la manipulation des volumes, notamment :

    • Lister les volumes :docker volume ls

    • Créer un volume :docker volume create <volume_name>

    • Supprimer un volume :docker volume rm <volume_name>

  • Les commandes relatives à la manipulation des networks, notamment:

    • Lister les networks :docker network ls

    • Créer un network :docker network create <network_name>

    • Supprimer les networks :docker network rm <network_name>

Lancez votre premier conteneur

Maintenant que vous êtes familiarisé avec les différentes catégories de commandes, il est grand temps de lancer votre premier conteneur !

Dans cette vidéo, nous avons vu :

  • Comment télécharger une image avec la commandedocker pull <image>

  • Comment lancer un conteneur en utilisant l’image téléchargée :

    • En mode interactif avec la commandedocker run -it <image>

    • En tâche de fond avec la commandedocker run -d <image>

    • Avec un volume avec la commandedocker run -v <volume_name>:/path/to/dir -it <image>

    • En exposant des ports du conteneur avec la commandedocker run -p <host_port>:<container_port> -it <image>

Exposer un port ?

En fonction du type de network utilisé par votre conteneur il sera parfois nécessaire “d’exposer” un port afin que celui-ci soit transposé sur la machine hôte par Docker. Ainsi, une application écoutant sur un port dans votre conteneur sera accessible sur un port de la machine hôte de manière transparente, tout en restant isolée d’un point de vue réseau.

Le port du conteneur est accessible depuis de la port de la machine hôte tout en restant isolé d'un point de vue réseau
Exemple de mapping d'un port

Vous savez désormais comment lancer un conteneur avec Docker. Comme nous l’avons vu ensemble, il est possible de démarrer un conteneur et de laisser celui-ci s'exécuter en tâche de fond.

Comment faire alors pour gérer un tel conteneur par la suite ?

Justement c’est ce que nous allons voir à présent.

Suivez la vie d’un conteneur

Une grande partie des commandes du CLI Docker sont dédiées aux opérations de gestion du cycle de vie des conteneurs.

En effet, un conteneur est une entité persistante dans un environnement Docker. Un conteneur peut donc être démarré, inspecté, interrompu, redémarré ou supprimé.

Parmi les commandes les plus importantes, nous pouvons citer :

Opération

Objectif

Exemple

Inspecter le(s) processus d’un conteneur

Voir les processus en cours dans un conteneur.

`docker top <container>`

Voir le journal d’exécution du conteneur

Afficher les logs du conteneur pour débugger ou surveiller.

`docker logs <container>`

Stopper un conteneur

Arrêter proprement un conteneur (i.e. en laissant le temps au(x) processus interne(s) de s’arrêter).

`docker stop <container>`

Tuer un conteneur

Arrêter brutalement un conteneur.

`docker kill <container>`

Supprimer un conteneur

Supprimer un conteneur arrêté pour libérer des ressources.

`docker rm <container>`

Copier des fichiers depuis/vers un conteneur

Copier des fichiers depuis un conteneur vers l'hôte et vice-versa.

`docker cp <container>:/path/to/file /local/path`

Avec ces commandes, vous êtes désormais en mesure de démarrer et de gérer le cycle de vie complet d’un conteneur Docker ! Mettons ceci en pratique avec le projet Libra !

À vous de jouer

Contexte

Au hasard d’une rencontre à la machine à café vous croisez Sarah, la CTO de l’entreprise. Vous en profitez pour rapidement lui décrire l’avancée de vos recherches. Toujours dans une approche très concrète des choses, elle vous lance :

Tu sais quoi ? En attendant le Poc (“Proof of Concept”) de Libra, il faudrait que tu démarres quelque chose de la même veine, qu’on ait une idée plus concrète de comment ça se comporte !

Afin de prouver la faisabilité d’un déploiement d’application web dans un conteneur Docker, vous allez récupérer l’image officielle d’un serveur HTTP bien connu, Nginx, et lancer celui-ci sur votre installation Docker. 

Consignes

  • Récupérer l’image Docker officielle  nginx:latest  sur votre machine avec la commande  docker pull

  • Démarrer un conteneur avec l’image Nginx en exposant le port 80 sur un port local 8080 sur votre machine

  • Vérifier que le serveur Nginx est bien accessible en local en navigant sur l’URL http://localhost:8080

Vérifiez votre travail à l’aide de cet exemple de corrigé

Voici les commandes à exécuter

# Récupérer la dernière version de l’image Nginx officielle
docker pull nginx:latest
# Démarrer votre conteneur en mode interactif (Ctrl+C pour le stopper)
# en exposant le port 80 du conteneur sur le port 8080 de l’hôte
docker run -it -p 8080:80 nginx:latest
# Une fois stoppé, lister les conteneurs en incluant ceux stoppés
docker ps -a
# Supprimer le conteneur (où <container_id> est à remplacer par l’identifiant trouvé avec la commande précédente)
docker rm <container_id>
docker pull en cours de téléchargement
docker pull en cours de téléchargement
docker pull téléchargement terminé
docker pull téléchargement terminé
docker run ...
docker run ...
docker ps -a + docker rm <image_id>
docker ps -a + docker rm

En résumé

  • Les volumes Docker permettent de  créer une persistance des données de nos conteneurs.

  • Les networks Docker permettent de définir les moyens de communication réseau entre les conteneurs et le monde extérieur. 

  • Les commandes Docker peuvent être résumées à quatre grandes catégories :

    • Les commandes de gestion du cycle de vie d’un conteneur (ex :docker run)

    • Les commandes de gestion d’images (ex :docker pull)

    • Les commandes de gestion des volumes (ex :docker volume create)

    • Les commandes de gestion des réseaux (ex : docker network ls)

Il est temps de découvrir comment créer nos propres images pour déployer des applications personnalisées et c’est ce que nous allons voir dans le prochain chapitre.

Exemple de certificat de réussite
Exemple de certificat de réussite