+33 6 74 52 84 16 contact@lmvi.eu
assorted-color filed intermodal containers

/

Un peu de contexte

Un conteneur est assez semblable à une VM. Alors que la VM est une machine entièrement nouvelle (d’un point de vue software) construite sur une machine physique, un conteneur n’a de son côté pas tous les composants habituels d’une machine a habituellement. Pour être plus précis, il n’a pas d’OS entier, mais seulement ce qui est nécessaire pour faire tourner ses applications. Il est construit à partir d’une image, qui correspond à sa configuration.

Commandes de monitoring

Les commandes suivantes sont, à mes yeux, les premières que vous avez besoin de connaître quand vous utilisez Docker.

docker ps (-a)

docker ps vous affiche toutes les instances de docker qui tournent actuellement sur votre environnement. Si vous ajoutez l’option -a, alors vous verrez mêmes les containers stoppés.

docker images (-a)

Cette commande vous montre les images que vous avez construites, et le -a vous montre les images intermédiaires.

docker network ls

docker-compose ps

La commande docker network ls liste les différents réseaux et docker-compose ps affiche tous les containers qui ont été lancés par docker-compose (qu’ils tournent actuellement ou non).

Commandes de runtime

Vous avez maintenant besoin d’images et de conteneurs pour tester les commandes précédentes.

docker-compose up (-d) (--build)

docker-compose stop

La docker-compose est la plus simple car vous n’avez besoin que de 2 commandes : up et stop. stop est assez explicite et stop (mais ne supprime pas) vos conteneurs, mais up nécessite plus d’explications : cela va construire vos images si elles ne le sont pas déjà, et va démarrer vos dockers.

Si vous voulez re-build vos images, utilisez l’option –build (vous pouvez aussi utiliser la commande docker-compose build pour uniquement construire des images). L’option -d, qui signifie “detach” fait tourner les conteneurs en tâche de fond.

docker build (-t NAME ) PATH /URL

Avec Docker, vous avez besoin d’une commande séparée pour construire votre image, où vous pouvez spécifier le nom de votre image et vous devez spécifier le PATH ou URL selon votre contexte (cela peut être un repo git).

docker run (-d) (-p hostPort :containerPort ) (--name NAME ) IMGNAME /IMGID

run crée le conteneur en utilisant l’image que vous indiquez. Vous pouvez spécifier de nombreux paramètres. Nous vous recommandons d’ajouter un nom à votre conteneur et vous pourriez avoir besoin de spécifier quelques ports à exposer. Comme pour docker-compose, le -d lance le conteneur en tâche de fond.

docker start ID /NAME

docker stop ID /NAME

Le start and stop ne devraient pas être trop compliqués à comprendre, mais il faut noter que vous pouvez “start” uniquement des conteneurs qui sont déjà arrêtés, donc déjà build avec la commande run.

docker exec -it NAME /ID “sh” /”/bin/bash”

Cette commande vous permet de lancer un shell sur votre container. Je préfère utiliser “/bin/bash” mais votre conteneur peut ne pas avoir bash d’installé, et seulement “sh” qui est plus courant (surtout sur les alpines). Si vous avez des configurations spéciales dans votre conteneur, vous aurez peut-être besoin d’utiliser des arguments supplémentaires pour vous y connecter. Cette commande peut vous permettre de faire bien plus, je vous recommande donc de lire cette doc pour trouver des informations supplémentaires..

Commandes de suppression

Ces commandes permettent de supprimer vos conteneurs et vos images. Vous en aurez probablement besoin pour libérer de l’espace disque.

docker rm ID /NAME

docker-compose rm

Le docker rm supprime seulement un conteneur alors que docker-compose rm supprime tous les conteneurs démarrés avec une commande docker-compose.

docker rmi ID /NAME

Docker rmi supprime l’image que vous passez en paramètre et récursivement toutes les images intermédiaires utilisées pour la construire.

Commandes de logs

Les commandes suivantes sont utiles quand vous devez débugger certains de vos conteneurs (ou, plus souvent, l’application que vous déployez à l’intérieur).

docker logs ID /NAME (-f --tail NBLINE )

Cette commande affiche les logs du container passé en paramètre. Si vous utilisez l’option -f –tail NBLINE vous pouvez suivre en live le flux de vos logs (NBLINE est le nombre de lignes que vous souhaitez afficher). Gardez à l’esprit de choisir un nombre de lignes que vous serez capable de gérer, pour ne pas être dépassé par vos logs.

docker-compose logs (ID /NAME )

L’option (ID /NAME ) avec docker-compose logs vous permet de voir les logs d’un conteneur uniquement, au lieu de voir tous les logs. L’astuce ici est que si vous n’utilisez pas l’option -d quand vous utilisez docker run ou docker-compose up vous verrez vos logs directement (mais vous aurez besoin d’arrêter le conteneur pour quitter la vue). Cela peut toujours être utile pour débugger des applications au démarrage.

Commandes Docker

docker ps # Visualiser les conteneurs actifs
docker ps -a # Visualiser tous les conteneurs
docker rm [container] # Supprimer un conteneur inactif
docker rm -f [container] # Forcer la suppression d'un conteneur actif
docker images # Lister les images existantes
docker rmi [image] # Supprimer une image docker
docker exec -t -i [container] /bin/bash # Exécuter des commandes dans un conteneur actif
docker inspect [container] # Inspecter la configuration d'un conteneur
docker build -t [image] . # Construire une image à partir d'un Dockerfile
docker history [image] # Visualiser l'ensemble des couches d'une image
docker logs --tail 5 [container] # Visualiser les logs d'un conteneur (les 5 dernières lignes)

Interaction avec le Registry

docker login # Se connecter au registry
docker search [name] # Rechercher une image
docker pull [image] # Récupérer une image
docker push [image] # Pouser une image du cache local au registry
docker tag [UUID] [image]:[tag] # Tagger une image

Commandes Docker Compose

docker-compose up -d # Démarre un ensemble de conteneurs en arrière-plan
docker-compose down # Stoppe un ensemble de conteneurs
docker-compose exec [service] [command] # Exécute une commande au sein d'un service

Instructions Dockerfile

OrdreInstructionDescription
1FROMImage parente
2MAINTAINERAuteur
3ARGVariables passées comme paramètres à la construction de l’image
4ENVVariable d’environnement
4LABELAjout de métadonnées
5VOLUMECrée un point de montage
6RUNCommande(s) utilisée(s) pour construire l’image
(6)(ADD)(Ajoute un fichier dans l’image *ADD vs COPY)
6COPYAjoute un fichier dans l’image
6WORKDIRPermet de changer le chemin courant
7EXPOSEPort(s) écouté(s) par le conteneur
8USERNom d’utilisateur ou UID à utiliser
9ONBUILDInstructions exécutées lors de la construction d’images enfants
10CMDExécuter une commande au démarrage du conteneur
10ENTRYPOINTExécuter une commande au démarrage du conteneur

Documentation officielle

Autres ressources

Outils

  • dockly – Immersive terminal interface for managing docker containers and services