Docker

2 décembre 2017

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 :

  • Docker Compose, pour la définition d’applications multi-conteneurs
  • Docker Registry, pour la distribution de conteneurs Docker open source
  • Docker Machine, pour le provisioning automatisé de conteneurs Docker
  • 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 conteneurs et 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. Docker pourra permettre 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, Docker permet de limiter les mises à jour au container concerné. Utilisant le concept d’architecture de microservices, Docker 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 Docker pré-paramétrés. Ce service hébergeant actuellement plus de 460 000 images de container.


Lionel Péramo
Fullstack web developer

No comments

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *