MĂ©mo - Commandes Docker đł
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]