Docker, Build, Ship and Run Any App, Anywhere

Docker, si vous n'en avez jamais entendu parler (ce qui n'est pas possible si vous lisez mon blog !), est un logiciel open source permettant d'embarquer une application dans un ou plusieurs conteneurs logiciels, qui pourra s'exécuter sur n'importe quel serveur, qu'il soit physique ou virtuel.

Nous allons essayer avec cet article de vous faire comprendre l'utilité d'un tel outil, son fonctionnement, ainsi que vous fournir les bases pour une utilisation souple et efficace.

La devise de Docker est "Build, Ship and Run Any App, Anywhere", soit "Développer, Déployer et Exécuter n'importe quelle application, n'importe où".

Docker est une plateforme ouverte pour les développeurs et les administrateurs système permettant de développer, déployer, et exécuter des applications distribuées. Composé de Docker Engine, un outil d'exécution portatif et léger et Docker Hub, un service dans le cloud de partage d'images de conteneurs, Docker permet le développement rapide d'applications à partir de composants et élimine les risques d'incompatibilité entre environnements de développement, d'assurance qualité et de production. En conséquence, l'IT peut déployer plus rapidement et exécuter la même application, de la même manière, sur des ordinateurs portables, des machines virtuelles, ou dans le cloud.

Contrairement aux machines virtuelles traditionnelles, un conteneur Docker n'inclut pas de système d'exploitation et s'appuie sur les fonctionnalités du système d’exploitation fournies par l'infrastructure hôte. Les conteneurs ne contiennent, au maximum, que les applications et librairies nécessaires à son fonctionnement.
La virtualisation permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et les exécuter sous forme de machines virtuelles (VM) sur un serveur. Ces VM intègrent elles-mêmes un OS sur lequel des applications sont exécutées.

Une image Docker peut s'apparentée à un template, constitué d’un ensemble de lignes de commandes, du code, des variables d'environnement, des fichiers de configuration, qui vont définir son contenu.
Un conteneur est une instance d’une image. Les conteneurs peuvent être démarrés, arrêtés et supprimés d’une façon très rapide et sécurisée. Il est possible de procéder à des modifications au niveau du conteneur même s'il est en cours d’exécution.
Les conteneurs étant volatiles par définition, il est possible d'utiliser des volumes pour en persister les données.

Pour installer Docker et faire tourner des conteneurs, vous aurez besoin d'une machine physique (NAS, Nuc, ordinateur, Raspberry Pi) sur laquelle vous installerez un système d'exploitation qui est en mesure d'accueillir Docker (Linux, Windows, MacOS). Dans mon cas, il s'agit d'un Nuc Intel sur lequel est installé Debian.

Pour l'installation en elle-même, je vous redirige vers la documentation officielle, qui sera adaptée selon votre OS et la plus à jour possible.

Install Docker Engine on Debian
Instructions for installing Docker Engine on Debian

Les étapes suivantes de post-installation ne sont pas à négliger, elles permettent de s'assurer que le système hôte est optimisé pour utiliser Docker.

Post-installation steps for Linux
Optional post-installation steps for Linux

Docker Hub est un service en ligne proposé par Docker pour partager des images de conteneurs. Il va vite devenir incontournable dans votre découverte et utilisation de Docker.

Les principales commandes de Docker qui vous seront utiles au quotidien dans la gestion des images et conteneurs sont les suivantes :

  • Pour rechercher une image :
docker search <mot-clé>
  • Pour télécharger une image :
docker pull <image>
  • Pour lister les images présentes sur votre système :
docker images
  • Pour lancer un conteneur à partir d'une image :
sudo docker run -d -p 80:80 <image>

Le paramètre -d permet d'indiquer que le conteneur doit être exécuté en arrière-plan, tandis que -p 80:80 indique les ports à utiliser.

  • Pour lister les conteneurs en cours d'exécution :
docker ps
  • Pour afficher les ressources utilisées par les conteneurs en cours d'exécution :
docker stats
  • Pour arrêter un conteneur :
docker stop <id-conteneur>
  • Pour supprimer un conteneur :
docker rm <id-conteneur>
  • Pour démarrer un conteneur arrêté :
docker start <id-conteneur>
  • Pour redémarrer un conteneur :
docker restart <id-conteneur>
  • Pour accéder en SSH dans le conteneur :
docker exec -it <id-conteneur> /bin/bash

Vous retrouverez la liste complète des commandes et options dans la documentation officielle.


Il était temps de le faire, mais nous avons enfin vu ensemble les bases de Docker, comment l'installer et quelles en sont les principales commandes. En espérant que cela vous ait aidé à comprendre l'intérêt qu'on peut y accorder pour faire tourner toute sorte d'application.

Nous continuerons dans de prochains articles à vous présenter les bonnes pratiques dans l'utilisation de Docker ou comment gérer les stacks en lignes de commande.

N'hésitez pas à nous laisser des commentaires si vous avez des questions, et également à nous rejoindre sur notre communauté Telegram pour discuter plus longuement du contenu des différents articles.