T206 ‐ CheatSheet Docker - Nini1551/EPHEC_Syntheses GitHub Wiki

CLI Docker

  • docker <type d'objet> <opération> : Exécuter une opération sur un type d'objet précis. Les types d'objets vus sont container, image, network, volume. (exception usuelle possible)

Container

  • docker run <nom-image> <cmd> : Créer un container au départ d’une image en indiquant le nom de l’image (si cette image n’existe pas sur l’hôte, elle sera automatiquement téléchargée depuis le registre Docker Hub). Une commande peut être effectuer à la suite mais n'est pas nécessaire.
    • -d : Lancer le container en mode daemon, ce qui permet de récupérer le prompt de la console après son démarrage. Ce paramètre est utile lorsqu’on lance un container de service, qui va tourner en arrière-plan et ne nécessitera pas d’interaction.
    • --name=<nom> : Assigner un nom personnalisé au container, pour l’identifier et le référencer plus facilement par la suite.
    • -it : Interagir avec le conteneur via un shell (nécessite un shell en argument)
    • -p <host port>:<container port>[/udp] : Réalise la publication du port qui va relier un port (tcp ou udp) sur l’hôte et un port (éventuellement différent) sur le container. Par défaut, le port du container sera ouvert en tcp.
    • --mount <CMD> : Créer un fichier partagé avec la machine hôte via une commande.
      • CMD : Chaque attribut est définit par un '='. Différents attributs sont séparés d'une ','.
        • type : Type de partage nécessaire. exemple : bind
        • source : Répertoire de la machine hôte à partager
        • target : Répertoire du container à partager
    • --network=<name> : Connecte le container créé au réseau nommé.
  • docker ps / docker container ls : Donner un certain nombre d’informations précieuses, comme l’identifiant du container, son nom (soit généré automatiquement, soit spécifié par l’utilisateur), et des informations concernant les ports, réseaux, volumes associés au container.
    • -a : Etendre l’affichage aux containers arrêtés : cela permet parfois de retrouver la trace d’un container qui devrait tourner mais qui s’est crashé.
  • docker start <nom/id> : Démarrer l’exécution d’un container déjà créé
  • docker stop <nom/id> : Arrêter l’exécution d’un container déjà créé
  • docker exec -it <nom container> <cmd> : Applique une commande à un container déjà lancé (mode daemon)
  • docker (container) inspect <nom/id> : Récupérer toutes les informations systèmes liées à un container (dont par exemple l’adresse IP)
  • docker logs <nom/id> : récupérer tous les logs qui ont été générés par l’exécution de la commande de démarrage sur le stdout et le stderr du processus correspondant
  • docker rm <nom/id> / docker container rm <nom/id> : Supprime le container avec l'identifiant spécifié.
  • docker inspect <nom/id> : Afficher les informations détaillées du container sous forme JSON
  • docker commit <nom-container> <nom-image> : Enregistrer l'état actuel d'un container (couche supérieure inscriptible) par dessus les couches de l’image d’origine du conteneur pour en faire une nouvelle image.

Images

  • docker images / docker images ls : Lister les images disponibles sur un hôte
  • docker (image) pull <nom de l'image> : Pour récupérer une image depuis un repository distant (Docker Hub par défaut). Lorsqu’un docker run est effectué sur une image absente, Docker s’occupait de la télécharger depuis le Docker Hub. En pratique, il a effectué l’équivalent d’un docker pull nginx.
  • docker (image) push <nom de l'image> : Pour envoyer une image sur le DockerHub
  • docker build <chemin du Dockerfile> : Construire une image sur base d’un Dockerfile. Si la commande est faite dans le répertoire où se trouve le Dockerfile, celui-ci ne doit pas être précisé.
    • -t <tag> : Le tag sera utilisé comme identifiant de l’image.
  • docker rmi <nom/id> / docker images rm <id> : Supprime l'image avec l'identifiant précisé.

Volumes

  • docker volume create <name> : Créer un volume avec un nom spécifique.
  • docker volume ls / docker volume : Afficher les volumes disponibles sur la machine hôte.
  • docker volume rm <name> : Effacer le volume nommé.
  • docker volume inspect <name> : Afficher les informations détaillées du volume sous forme JSON.

Networks

  • docker network create <name> : Créer un network avec un nom spécifique.
  • docker network ls : Afficher les networks disponibles sur la machine hôte.
  • docker network inspect <name> : Afficher les informations détaillées du réseau sous forme JSON.
  • docker network remove <name> : Effacer le réseau nommé.
  • docker network connect <network> <container> : Connecte le container nommé au réseau bridge nommé.
  • docker network disconnect <network> <container> : Déconnecte le container nommé au réseau bridge nommé.

Dockerfile

Un fichier Dockerfile est un simple fichier texte listant des commandes. Il doit être appelé Dockerfile

  • FROM <image> : Indique l’image de base par dessus laquelle la nouvelle image sera construite.
  • MAINTAINER <nom> : Documente le nom du responsable du fichier
  • RUN <commande> : Indique une commande à exécuter dans la nouvelle couche à rajouter sur le système de fichiers.
  • COPY <src> <dst> : Copie un fichier depuis l’hôte (au départ du répertoire source) vers la destination, à savoir le système de fichiers de l’image
  • ENV <key> <value> : Définit une variable d’environnement pour l’image
  • EXPOSE <port> : Indique que l’application qui tournera dans le container écoutera sur le port indiqué. Cette instruction ne modifie pas le comportement du container ni ne rend le port accessible de l’extérieur. Il s’agit juste d’une documentation de l’existence de cette ouverture de port pour le futur utilisateur de l’image.
  • VOLUME <point de montage> : Indique un répertoire de montage pour un volume. Le nom du volume sera spécifié lors du lancement du container.
  • CMD [<commande>] : Indique quelle commande exécuter au démarrage du container, si aucune commande n’a été indiquée dans le “docker run”
  • ENTRYPOINT [<commande>] : Indique également la commande de démarrage du container. Contrairement à CMD, lorsque ENTRYPOINT est utilisé, le dernier paramètre du ‘docker run’ ne va pas écraser la commande ENTRYPOINT mais y être concaténé.

Docker-compose

Un fichier Docker-compose permet de définir dans un seul fichier tous les paramètres nécessaires au lancement d’une application multi-containers sur un hôte unique.

  • version: : version de Docker utilisée
  • name: : nom du Docker-compose
  • services : containers à lancer
    • <nom du container>
      • image: : image du container
      • ports: : ports ouverts du container (<port de l'hôte>:<port du container>)
      • networks: : réseau du container
      • volumes: : volume de base du container
  • network : networks utilisés du Docker-compose
  • volumes : volumes utilisés du DOcker-compose
⚠️ **GitHub.com Fallback** ⚠️