Aller au contenu

Les commandes Docker à connaître

Mise à jour :

Cheat Sheet Docker

Le lien vers le PDF: Cheat Sheet Docker

Docker est un outil incontournable pour gérer des conteneurs et leurs applications de manière simple et efficace. Grâce à Docker, tu peux créer, déployer et gérer des environnements isolés pour tes applications, que ce soit sur ton ordinateur ou dans le cloud. Ce guide propose un cheat sheet complet des commandes essentielles à connaître pour utiliser Docker au quotidien. Il te permettra de gérer facilement tes conteneurs, images, volumes et réseaux.

Tirer, gérer et pousser des images Docker

Les images Docker sont à la base du fonctionnement des conteneurs. Une image est une sorte de modèle qui contient tout le nécessaire pour exécuter une application (dépendances, bibliothèques, etc.). Voici les principales commandes pour télécharger, gérer, et pousser des images dans un registre distant.

Pull des images

La commande docker pull te permet de télécharger des images depuis un registre, tel que le Docker Hub. Par exemple, pour télécharger une image de Nginx, tu peux utiliser cette commande :

Terminal window
docker pull nginx

Cela récupérera l’image la plus récente de Nginx depuis le Docker Hub. Si tu veux une version spécifique, tu peux la préciser comme ceci :

Terminal window
docker pull nginx:1.21.0

Build des images

Si tu souhaites créer ta propre image à partir d’un fichier Dockerfile, utilise la commande docker build. Par exemple, si ton Dockerfile se trouve dans le répertoire courant et que tu veux nommer ton image “mon_app”, voici la commande :

Terminal window
docker build -t mon_app .

Lister les images

Pour afficher toutes les images présentes sur ta machine, utilise docker images :

Terminal window
docker images

Cela te donne un aperçu des images disponibles localement, avec leur taille et la date de création.

Supprimer des images

Si tu as une image dont tu n’as plus besoin, tu peux la supprimer avec la commande docker rmi. Par exemple, pour supprimer l’image “mon_app” que tu as créée précédemment :

Terminal window
docker rmi mon_app

Push des images vers un registre

Une fois ton image construite et prête à être partagée, tu peux la pousser vers un registre, tel que Docker Hub ou un registre privé. Pour cela, tu dois d’abord t’assurer que l’image est correctement taguée avec le nom du registre. Par exemple, si tu veux pousser “mon_app” vers Docker Hub sous l’utilisateur “mon_compte”, voici comment faire :

  1. D’abord, taguer l’image avec le nom du registre et ton compte Docker Hub :
Terminal window
docker tag mon_app mon_compte/mon_app:latest
  1. Ensuite, pousser l’image vers le registre avec la commande docker push :
Terminal window
docker push mon_compte/mon_app:latest

Après cette commande, ton image sera disponible sur Docker Hub et tu pourras la partager ou la déployer sur d’autres machines.

Lancer et gérer les conteneurs Docker

Les conteneurs Docker sont des instances exécutées à partir d’une image. Chaque conteneur fonctionne de manière isolée, ce qui te permet de déployer et exécuter des applications indépendamment du reste de ton système. Voici les commandes clés pour lancer et gérer tes conteneurs Docker.

Lancer un conteneur

La commande docker run est la plus couramment utilisée pour démarrer un nouveau conteneur. Par exemple, pour lancer un conteneur Nginx, tu utiliserais cette commande :

Terminal window
docker run nginx

Cela démarrera un conteneur basé sur l’image Nginx que tu as téléchargée précédemment. Le conteneur sera lancé au premier plan, ce qui signifie que tu devras garder la fenêtre de terminal ouverte pour le maintenir en cours d’exécution.

Si tu veux que le conteneur fonctionne en arrière-plan, tu peux utiliser l’option -d (détaché) :

Terminal window
docker run -d nginx

Nommer un conteneur

Pour faciliter la gestion, tu peux attribuer un nom à ton conteneur avec l’option --name. Par exemple, pour lancer Nginx avec le nom “mon_nginx” :

Terminal window
docker run -d --name mon_nginx nginx

Ce nom te permettra de faire référence plus facilement au conteneur dans d’autres commandes.

Lister les conteneurs

Pour voir tous les conteneurs en cours d’exécution, utilise docker ps :

Terminal window
docker ps

Cela affichera les conteneurs actifs avec des informations telles que le nom, l’ID, et l’image utilisée. Si tu veux voir tous les conteneurs, même ceux qui sont arrêtés, ajoute l’option -a :

Terminal window
docker ps -a

Exécuter une commande dans un conteneur

Tu peux exécuter une commande dans un conteneur qui est en cours d’exécution en utilisant docker exec. Par exemple, pour accéder à un terminal interactif dans ton conteneur “mon_nginx” et vérifier la configuration du serveur Nginx :

Terminal window
docker exec -it mon_nginx /bin/bash

Cela te donne accès à un shell dans le conteneur pour effectuer des actions directement dedans.

Arrêter un conteneur

Si tu veux arrêter un conteneur en cours d’exécution, utilise docker stop suivi du nom ou de l’ID du conteneur. Par exemple, pour arrêter “mon_nginx” :

Terminal window
docker stop mon_nginx

Supprimer un conteneur

Si tu as un conteneur dont tu n’as plus besoin, tu peux le supprimer avec docker rm. Attention, le conteneur doit être arrêté avant de le supprimer. Si tu souhaites supprimer “mon_nginx” après l’avoir arrêté, voici la commande :

Terminal window
docker rm mon_nginx

Si tu veux supprimer plusieurs conteneurs à la fois, tu peux utiliser leurs noms ou ID en les séparant par des espaces, ou utiliser une commande comme celle-ci pour supprimer tous les conteneurs arrêtés :

Terminal window
docker rm $(docker ps -a -q)

Redémarrer un conteneur

Enfin, si tu veux redémarrer un conteneur sans le recréer, utilise docker restart :

Terminal window
docker restart mon_nginx

Cela arrête et relance le conteneur sans perdre ses données ni sa configuration.

Gérer les volumes Docker

Les volumes Docker sont utilisés pour stocker des données de manière persistante, même lorsque les conteneurs sont supprimés. Les volumes permettent de sauvegarder des données sur ton disque, ce qui est essentiel pour les applications nécessitant la persistance des informations, comme une base de données. Voici comment créer et gérer des volumes Docker.

Créer un volume

Pour créer un volume, utilise la commande docker volume create. Par exemple, pour créer un volume nommé “mon_volume”, tu peux utiliser cette commande :

Terminal window
docker volume create mon_volume

Cela va créer un volume persistant que tu pourras monter dans un ou plusieurs conteneurs.

Utiliser un volume avec un conteneur

Pour monter un volume dans un conteneur, utilise l’option -v ou --mount avec docker run. Par exemple, si tu veux lancer un conteneur Nginx et monter “mon_volume” dans le dossier /usr/share/nginx/html du conteneur, voici la commande :

Terminal window
docker run -d --name mon_nginx -v mon_volume:/usr/share/nginx/html nginx

Dans cet exemple, les fichiers du dossier /usr/share/nginx/html du conteneur seront stockés dans “mon_volume”, et les données resteront disponibles même après la suppression du conteneur.

Lister les volumes

Pour afficher la liste des volumes existants sur ta machine, utilise la commande docker volume ls :

Terminal window
docker volume ls

Cela te montrera tous les volumes, qu’ils soient utilisés ou non par des conteneurs.

Inspecter un volume

Pour obtenir des détails sur un volume spécifique, utilise la commande docker volume inspect suivie du nom du volume. Par exemple, pour inspecter “mon_volume” :

Terminal window
docker volume inspect mon_volume

Cette commande te fournira des informations sur le volume, comme son chemin de stockage sur ton système.

Supprimer un volume

Si un volume n’est plus utilisé, tu peux le supprimer avec docker volume rm. Par exemple, pour supprimer “mon_volume” :

Terminal window
docker volume rm mon_volume

Attention, Docker ne permet pas de supprimer un volume utilisé par un conteneur actif. Il faut donc d’abord arrêter et supprimer tous les conteneurs qui utilisent ce volume.

Nettoyer les volumes inutilisés

Pour supprimer tous les volumes non utilisés par des conteneurs actifs, tu peux utiliser la commande docker volume prune. Cela te permet de libérer de l’espace disque en supprimant les volumes qui ne sont plus nécessaires :

Terminal window
docker volume prune

Gérer les réseaux Docker

Les réseaux Docker permettent de connecter plusieurs conteneurs entre eux et avec le monde extérieur. Docker crée automatiquement des réseaux pour que les conteneurs puissent communiquer de manière isolée ou connectée selon les besoins de ton application. Voici comment créer, gérer, et supprimer des réseaux Docker.

Créer un réseau

Pour créer un réseau personnalisé, tu peux utiliser la commande docker network create. Par exemple, si tu veux créer un réseau nommé “mon_reseau” :

Terminal window
docker network create mon_reseau

Ce réseau te permettra de connecter différents conteneurs entre eux afin qu’ils puissent communiquer plus facilement.

Utiliser un réseau avec un conteneur

Lorsque tu lances un conteneur, tu peux le connecter à un réseau spécifique à l’aide de l’option --network. Par exemple, pour démarrer un conteneur Nginx sur le réseau “mon_reseau” :

Terminal window
docker run -d --name mon_nginx --network mon_reseau nginx

Le conteneur “mon_nginx” sera désormais isolé au sein du réseau “mon_reseau”, et il pourra communiquer avec d’autres conteneurs présents sur ce même réseau.

Lister les réseaux

Pour voir tous les réseaux disponibles sur ta machine, utilise la commande docker network ls :

Terminal window
docker network ls

Cela te montrera les réseaux par défaut de Docker (comme bridge, host, et none) ainsi que ceux que tu as créés, comme “mon_reseau”.

Inspecter un réseau

Si tu veux obtenir des informations détaillées sur un réseau, comme les conteneurs qui y sont connectés, utilise la commande docker network inspect suivie du nom du réseau. Par exemple, pour inspecter “mon_reseau” :

Terminal window
docker network inspect mon_reseau

Cela te donnera une vue détaillée sur la configuration du réseau et ses conteneurs associés.

Déconnecter un conteneur d’un réseau

Si tu veux déconnecter un conteneur d’un réseau sans l’arrêter, tu peux utiliser docker network disconnect. Par exemple, pour déconnecter “mon_nginx” de “mon_reseau” :

Terminal window
docker network disconnect mon_reseau mon_nginx

Cela permet d’isoler un conteneur sans devoir le supprimer ou l’arrêter.

Supprimer un réseau

Une fois que tu n’as plus besoin d’un réseau, tu peux le supprimer avec docker network rm. Par exemple, pour supprimer “mon_reseau” :

Terminal window
docker network rm mon_reseau

Docker ne te permettra pas de supprimer un réseau s’il y a encore des conteneurs connectés à celui-ci. Il te faudra donc d’abord arrêter ou déconnecter les conteneurs actifs.

Nettoyer les réseaux inutilisés

Pour supprimer tous les réseaux qui ne sont pas utilisés par des conteneurs actifs, utilise la commande docker network prune :

Terminal window
docker network prune

Cela te permet de faire du nettoyage en supprimant les réseaux superflus qui ne sont plus utilisés.

Nettoyer les ressources inutilisées avec Docker prune

Avec le temps, Docker accumule des ressources inutilisées, telles que des conteneurs arrêtés, des images non utilisées, des volumes orphelins, et des réseaux non utilisés. Pour éviter de surcharger ton système avec ces fichiers inutiles, Docker offre une série de commandes prune pour effectuer un nettoyage rapide et efficace.

La commande la plus générale pour nettoyer toutes les ressources inutilisées est docker system prune. Elle supprime :

  • Les conteneurs arrêtés
  • Les images non utilisées par des conteneurs actifs
  • Les volumes non montés dans des conteneurs
  • Les réseaux inutilisés

Voici comment l’utiliser :

Terminal window
docker system prune

Docker te demandera une confirmation avant de supprimer les ressources inutilisées. Une fois la commande exécutée, tu gagneras de l’espace disque en supprimant tous ces éléments superflus.

Si tu veux spécifiquement supprimer les images non utilisées, tu peux utiliser l’option -a avec docker system prune. Cela supprimera toutes les images qui ne sont pas utilisées par un conteneur actif, même celles qui sont encore présentes localement.

Terminal window
docker system prune -a

Cette commande est utile si tu souhaites faire un nettoyage en profondeur et supprimer toutes les anciennes versions d’images qui ne sont plus nécessaires.

Voici une version plus détaillée de la commande docker events au format Markdown, avec quelques explications supplémentaires pour mieux comprendre son usage :

Surveillance des Événements Docker

La commande docker events permet de surveiller en temps réel tous les événements qui se produisent dans Docker. Cela inclut les événements liés aux conteneurs, aux images, aux volumes et aux réseaux. C’est un outil très utile pour le diagnostic et le suivi des activités de votre environnement Docker.

Utilisation de la commande

Terminal window
$ docker events

Exemple de sortie

Lors de l’exécution de la commande, vous verrez des événements en temps réel comme ceux-ci :

Terminal window
2024-10-10T12:00:01.123456789Z container start 123abc456def (image=nginx, name=web-container)
2024-10-10T12:00:05.987654321Z container stop 123abc456def (image=nginx, name=web-container)
2024-10-10T12:01:10.654321987Z volume create my_volume

Options courantes

Vous pouvez filtrer les événements pour ne voir que ceux qui vous intéressent, en utilisant des options telles que :

  • Filtrer par type d’objet :

    Par exemple, pour ne voir que les événements liés aux conteneurs :

    Terminal window
    $ docker events --filter "type=container"
  • Filtrer par action spécifique :

    Si vous ne souhaitez voir que les événements de démarrage de conteneurs :

    Terminal window
    $ docker events --filter "event=start"
  • Filtrer par nom d’image ou de conteneur :

    Par exemple, pour ne voir que les événements liés à une image spécifique comme nginx :

    Terminal window
    $ docker events --filter "image=nginx"

Applications pratiques

  • Débogage : Vous pouvez utiliser cette commande pour observer ce qui se passe lorsqu’un conteneur ne démarre pas correctement ou pour détecter des erreurs dans les volumes ou les réseaux.
  • Surveillance : Elle est utile pour suivre l’activité des conteneurs dans un environnement de production afin de voir quels conteneurs démarrent ou s’arrêtent, ainsi que les modifications d’images.
  • Audit : Vous pouvez surveiller les événements sur une période donnée pour obtenir un historique des actions qui ont été effectuées dans Docker.

Commandes avancées

  • Surveiller un événement spécifique à un intervalle précis : Si vous souhaitez observer les événements d’une période donnée, utilisez l’option --since :
    Terminal window
    $ docker events --since '2024-10-10T12:00:00' --until '2024-10-10T13:00:00'

Cette commande vous permettra de surveiller Docker de manière efficace et de mieux comprendre ce qui se passe sous le capot de votre infrastructure de conteneurs.

Conclusion

Avec ces connaissances et astuces, tu es désormais mieux équipé pour gérer tes conteneurs Docker de manière efficace et fluide.

Pour Aller Plus Loin avec Docker

J’ai compilé les meilleures pratiques et guides issus de mon site pour vous accompagner pas à pas, du débutant à l’expert.

Installation et Configuration correcte de Docker

Une configuration correcte est essentielle pour la sécurité et les performances de Docker. Dans ce guide, vous trouverez mes principales recommandations pour installer Docker :

  • Créez une partition dédiée pour Docker
  • Désactivez les privilèges inutiles
  • Activez des options comme le Live Restore pour éviter les interruptions de service.

Installez correctement Docker

Vous débutez sur Docker ?

Ce premier guide couvre tout ce que vous devez savoir pour démarrer :

  • Les concepts de base de Docker : images et conteneurs
  • Pourquoi Docker est un outil indispensable pour le développement moderne
  • Les avantages de Docker en termes de portabilité, isolation et efficacité
  • Comment Docker s’intègre dans les pratiques DevOps pour automatiser les déploiements
  • Les commandes de base de la CLI Docker …

Débutez avec Docker

Écrire des Dockerfiles aux petits oignons

Un Dockerfile optimisé réduit la taille de vos images et accélère leur déploiement. Par exemple :

  • Utilisez l’instruction COPY au lieu de ADD pour une transparence accrue
  • Limitez le nombre de couches en combinant les commandes RUN.

Ecrire correctement des Dockerfiles

Optimisation des images Docker

Réduisez la taille de vos images en utilisant :

  • L’option --no-install-recommends dans le gestionnaire de packages de l’OS
  • Un fichier .dockerignore pour exclure les fichiers non nécessaires.
  • En nettoyant aussi les caches pour maintenir vos images légères …

Optimisation de la taille des images

Sécurisation des secrets dans Docker

Protéger vos secrets (comme des clés API, des mots de passe) dans Docker est essentiel. Découvrez comment utiliser les fonctionnalités intégrées pour gérer les secrets de manière sécurisée dans vos environnements de production.

Pour que vos secrets le restent