Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur ». 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.2
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ée3. Pour ce faire, Docker utilise entre autres LXC, cgroups et le noyau Linux lui-même2. 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ôte4.
La technologie de conteneur de Docker peut être utilisée pour étendre des systèmes distribués de façon qu'ils s'exécutent de manière autonome depuis une seule machine physique ou une seule instance par nœud. Cela permet aux nœuds d'être déployés au fur et à mesure que les ressources sont disponibles, offrant un déploiement transparent et similaire aux PaaS pour des systèmes comme Apache Cassandra, Riak, ou d'autres systèmes distribués5.
Personnellement, je l'installe sur des containers Proxmox (voir articles sur containers) n'ayant de ce fait pas de VMs à installer et ainsi me dédouanant d'un OS maitre.
Voici un exemple de container Docker pour l'utilisation de Lufi :
Lufi est une application Open source permettant de transfert des fichiers volumineux dans le même style que Wetransfert. Après quelques commandes pour effectuer un paramétrage pour mon infrastructure, voici ce que cela rend:
Pour résumer l'utilisation de docker, cela vous offre la possibilité de mettre plusieurs services sur une même machine et ainsi réduire le nombre de vos ressources.