MĂ©mo - Commandes Docker 🐳

· Lucas Videlaine


Docker est une logiciel libre permettant de lancer des applications dans des conteneurs logiciels.
Il ne s'agit pas de virtualisation, mais de conteneurisation, une forme plus lĂ©gĂšre qui s'appuie sur certaines parties de la machine hĂŽte pour son fonctionnement. Cette approche permet d'accroĂźtre la flexibilitĂ© et la portabilitĂ© d’exĂ©cution d'une application, laquelle va pouvoir tourner de façon fiable et prĂ©visible sur une grande variĂ©tĂ© de machines hĂŽtes, que ce soit sur la machine locale, un cloud privĂ© ou public, une machine nue, etc.
Techniquement, Docker Ă©tend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exĂ©cute les processus de façon isolĂ©e. Pour ce faire, Docker utilise entre autres LXC, cgroups et le noyau Linux lui-mĂȘme. Contrairement aux machines virtuelles traditionnelles, un conteneur Docker n'inclut pas de systĂšme d'exploitation, mais s'appuie au contraire sur les fonctionnalitĂ©s du systĂšme d’exploitation fournies par la machine hĂŽte.

DĂ©finition du vocabulaire

Containers

Un container Docker, Ă  l’opposĂ© des machines virtuelles traditionnelles, n'embarque pas de systĂšme d'exploitation invitĂ©. En effet, il s’appuie sur les fonctionnalitĂ©s du noyau hĂŽte et exploite de l’isolation de ressources (CPU, mĂ©moire, I/O, connexions rĂ©seau, etc).

Images

Une image Docker reprĂ©sente le systĂšme de fichiers, sans les processus. Elle contient tout ce que vous avez dĂ©cidĂ© d’y installer tels qu'un systĂšme de base de donnĂ©es, un serveur web, une application python, etc. Les images sont crĂ©Ă©es Ă  partir de fichiers de configuration, nommĂ©s « Dockerfiles », qui dĂ©crivent exactement ce qui doit ĂȘtre installĂ© dans le container. Un conteneur correspond donc Ă  l’exĂ©cution d’une image spĂ©cifique.

Dockerfiles

Le Dockerfile est votre fichier source qui permet la construction d'une image. Un Dockerfile peut ĂȘtre inclus dans d’autres Dockerfile, et ĂȘtre Ă  la base de plusieurs images diffĂ©rentes. Vous pouvez choisir d’utiliser des images officielles, des images modifiĂ©es, que vous trouvez sur Docker Hub ou autres rĂ©pertoires d'images, mais vous pouvez aussi choisir de personnaliser vos propres images en Ă©crivant un Dockerfile.

Compose

Compose est un outil pour définir et exécuter des applications multi-conteneurs. Les conteneurs étant idéaux pour des applications basées sur des microservices, il devient nécessaire de gérer les différents containers ainsi que leurs interconnexions.

Volumes

Les volumes sont un mĂ©canisme permettant la persistance des donnĂ©es gĂ©nĂ©rĂ©es par et utilisĂ©es par les conteneurs Docker. Les volumes Docker ont de nombreux avantages, tels qu’une grande simplicitĂ© de sauvegarde et de migration ou encore leur gestion facilitĂ© grĂące aux outils et commandes Docker.

Kubernetes

Kubernetes est un systĂšme open source qui vise Ă  fournir une plateforme permettant d'automatiser le dĂ©ploiement, la montĂ©e en charge et la mise en Ɠuvre de conteneurs.

Commandes indispensables

Informations diverses sur Docker

docker info
docker version

Créer et démarrer un container

docker run [image_name]

ArrĂȘter un container

docker stop [container_id]

DĂ©marrer un container

docker start [container_id]

Supprimer un container

docker rm [container_id]

Lister les containers démarrés et lister tous les containers

docker ps 
docker ps -a

ArrĂȘter tous les containers

docker stop $(docker  ps -a -q)

DĂ©marrer tous les containers

docker start $(docker ps -a -q)

Supprimer tous les containers (aprĂšs les avoir arrĂȘtĂ©s)

docker rm $(docker  ps -a -q)

Lister les images locales (téléchargées ou construites)

docker images

Supprimer une ou des images

docker rmi [container_id] [container_id] ...

Construire une image Ă  partir d'un Dockerfile

docker build -t [wanted_image_name] -f [path_to_dockerfile]

Exécuter un fichier docker-compose en mode détaché

docker-compose -d -f [path_to_docker-compose-file]

Exécuter une commande au sein d'un container

docker exec -it [container_id] [command]
docker exec -it [container_id] bash

Afficher les journaux de logs d'un container

docker logs [container_id]

Sources

Documentation officielle
Article initial de 2018