Docker possède à la fois un module pour lancer les applications (runtime) et un outil de build (BuildKit) d’application.
Pour lister tous les images, on utilise :
docker images # ancienne syntaxe
docker image ls # syntaxe moderne et recommandée
docker image --help
Utilisez --help après chaque commande, sous-commande ou sous-sous-commandes pour voir les options et possibilités
docker info # affiche plein d'information sur l'engine avec lequel vous êtes en contact
docker ps # affiche les conteneurs en train de tourner
docker ps -a # affiche également les conteneurs arrêtés
docker run [-d] [-p port_h:port_c] [-v dossier_h:dossier_c] <image> <commande>
--name-d permet* de lancer le conteneur en mode daemon ou détaché et libérer le terminal-p permet de mapper un port réseau entre l’intérieur et l’extérieur du conteneur, typiquement lorsqu’on veut accéder à l’application depuis l’hôte.-v permet de monter un volume partagé entre l’hôte et le conteneur.--rm (comme remove) permet de supprimer le conteneur dès qu’il s’arrête.-it permet de lancer une commande en mode interactif (un terminal comme bash).-a (ou --attach) permets de se connecter à l’entrée-sortie du processus dans le conteneur.Le démarrage d’un conteneur est lié à une commande.
Si le conteneur n’a pas de commande, il s’arrête dès qu’il a fini de démarrer
docker run debian # s'arrête tout de suite
docker run debian bash -c "echo 'attendre 10s'; sleep 10" # s'arrête après 10s
docker run créé un nouveau conteneur à chaque fois.
docker stop <nom_ou_id_conteneur> # ne détruit pas le conteneur
docker start <nom_ou_id_conteneur> # le conteneur a déjà été créé
docker start --attach <nom_ou_id_conteneur> # lance le conteneur et s'attache à la sortie standard
La commande docker exec permet d’exécuter une commande à l’intérieur du conteneur s’il est lancé.
Une utilisation typique est d’introspecter un conteneur en lançant bash (ou sh).
docker exec -it <conteneur> /bin/bash # fonctionne si bash est présent dans le conteneur
Une des forces de Docker vient de la distribution d’images :
pas besoin de dépendances, on récupère une boîte autonome
pas besoin de multiples versions en fonction des OS
Dans ce contexte, un élément qui a fait le succès de Docker est le Docker Hub : hub.docker.com
Il s’agit d’un répertoire public et souvent gratuit d’images (officielles ou non) pour des milliers d’applications préconfigurées.
On peut y chercher et trouver presque n’importe quel logiciel au format d’image Docker.
Il suffit pour cela de chercher l’identifiant et la version de l’image désirée.
Puis utilisé docker run [<compte>/]<id_image>:<version>
La partie compte est le compte de la personne qui a poussé ses images sur le Docker Hub. Les images Docker officielles (ubuntu par exemple) ne sont pas liées à un compte : on peut écrire simplement ubuntu:focal.
On peut aussi juste télécharger l’image : docker pull <image>
Exemple :
docker pull nginx
docker pull nginx:1.21.0
On peut également y créer un compte gratuit pour pousser et distribuer ses propres images, ou installer son propre serveur de distribution d’images privé ou public, appelé registry.
