Fondateur du framework OTRA.
Fondateur de la librairie frontend EcoComposer.
Spécialiste écoconception de services numériques.
Docker est un logiciel open source sous licence Apache 2.0 développé par une société américaine, également appelée Docker, qui a été lancée par un Français : Solomon Hykes. Il automatise le déploiement d’applications dans des conteneurs logiciels.
Docker Engine permet de créer, de partager et de distribuer des images dans un environnement via Docker Hub. Docker gère le provisioning et la portabilité des conteneurs. En plus de Docker Engine, Docker dispose d’autres composants open source :
- Compose, pour la définition d’applications multi-conteneurs
- Registry, pour la distribution de conteneurs Docker open source
- Machine, pour le provisioning automatisé de conteneurs Docker
- Swarm, pour la gestion en cluster des hôtes et la planification des conteneurs
- Kitematic, interface utilisateur de bureau pour Docker
Différence entre les conteneurs Docker et les machines virtuelles
Les conteneurs sont une abstraction au niveau de la couche d’application qui regroupe le code et les dépendances. Plusieurs conteneurs peuvent s’exécuter sur la même machine et partager le noyau du système d’exploitation avec d’autres conteneurs, chacun s’exécutant en tant que processus isolé dans l’espace utilisateur. Les conteneurs occupent moins d’espace que les machines virtuelles (les images de conteneurs ont généralement une taille de plusieurs dizaines de Mo) et démarrent presque instantanément.
Les machines virtuelles (VM) sont une abstraction du matériel physique qui transforme un serveur en plusieurs serveurs. L’hyperviseur permet à plusieurs machines virtuelles de s’exécuter sur une seule machine. Chaque machine virtuelle inclut une copie complète d’un système d’exploitation, une ou plusieurs applications, etc. occupant des dizaines de Go. Les machines virtuelles peuvent également être lentes à démarrer.
Utilité
Docker accélère les déploiements car les containers sont légers. Les basculer d’un environnement de développement ou de test à un environnement de production peut donc se faire très rapidement, ce qui n’est pas le cas pour la machine virtuelle. Du fait de la disparition du système d’exploitation intermédiaire des machines virtuelles, les développeurs bénéficient aussi d’une pile applicative plus proche de celle de l’environnement de production, ce qui engendre mécaniquement moins de mauvaises surprises lors des passages en production. Il sera donc possible dans le même temps de concevoir une architecture de test plus agile, chaque container de test pouvant intégrer une brique de l’application (base de données, langages, composants…). Pour tester une nouvelle version d’une brique, il suffira de changer le container correspondant. Côté déploiement continu, cette technologie permet de limiter les mises à jour au container concerné. Utilisant le concept d’architecture de microservices, cette technologie permet donc d’isoler les composants de l’application grâce aux containers.
Usage
Docker met à la disposition des utilisateurs un service nommé Docker Hub permettant l’échange et la construction de containers pré-paramétrés. Ce service hébergeant actuellement plus de 460 000 images de container.
Lionel Péramo
Fullstack developer
email : Lionel.peramo@wexample.com