Sélectionner une page

Docker est une plateforme de containerisation, qui permet de rapidement composer, créer, déployer et échelonner des containers hébergés sur des hôtes Docker. En version bêta, il est également possible pour les développeurs de coder des applications depuis leur machine, puis de les déployer en mode multi-cloud.

Comment fonctionne la technologie Docker ?

Conçue à l’origine pour fonctionner sur Linux uniquement, la troisième version de Docker fonctionne avec d’autres OS comme Windows et MacOs, ainsi que Amazon Web Services et Azure. Elle offre également un bon niveau de portabilité et dispose de toute une batterie d’outils performants dédiés à la gestion de containers et au clustering.

L’automatisation de Docker permet de faciliter le déploiement des containers, tandis que Docker Application se consacre au déploiement des applications multi-container sur la plupart des infrastructures. Il est ainsi possible de les créer, les déployer, les copier et les déplacer d’un environnement à l’autre, ce qui en fait un excellent choix pour développer pour le Cloud.

Docker, l’image et les couches

Docker propose un contrôle total sur ses versions au moyen de l’utilisation de couches (layers) : chaque fichier image se compose en réalité d’une série de couches, assemblées pour former une image unique.

A chaque modification de l’image ou exécution de commande (run, copy, etc.), Docker crée une nouvelle couche, qu’il peut ensuite réutiliser pour construire de nouveaux conteneurs. Les modifications sont partagées entre les différentes images, afin de conserver de bonnes performances en matière de vitesse, de poids et d’efficacité. Si une image pose un problème, il est ainsi aisé de revenir à une version précédente, puisque tout est conservé : c’est une manière de développer inédite, qui autorise le retour en arrière.

Enfin, le déploiement avec Docker est bien plus rapide qu’avec une technologie non conteneurisée : avec un container créé par processus, chaque processus peut être immédiatement partagé avec les nouvelles applications. Il est de plus inutile de redémarrer le système à chaque déplacement ou ajout de conteneur : créer et même détruire se fait très facilement et à très grande vitesse ! Vu cette facilité, il est important de contrôler de manière stricte la prolifération de conteneurs uniques afin d’éviter d’en complexifier inutilement la gestion.

La sécurité, une problématique permanente

Les fonctionnalités de Docker ont beau être héritées du noyau Linux, elles ne permettent pas de profiter de tous les avantages d’UNIX. Par exemple, pas de cron, pas de syslog au sein du container. De même, le nettoyage des processus a ses limites comparé au Linux traditionnel, s’il n’est pas configuré pour dès le début.

Avec Docker, chaque container reste isolé mais partage le même système d’exploitation : une faille ou une attaque sur l’OS risque de compromettre l’ensemble des containers hébergés. Si un pirate parvenait à prendre le contrôle des sous-systèmes, il pourrait corrompre l’hôte lui-même car le noyau de celui-ci est commun à tous les conteneurs. Notons que ce n’est pas le cas avec les VMs, qui elles sont isolées du système hôte.

Enfin, comme tout daemon, celui propre à Docker peut engendrer des problèmes de sécurité, car celui-ci s’exécute en permanence et nécessite des privilèges de type root. Il est donc crucial de surveiller l’accès à ce processus ainsi que son emplacement (un réseau externe est toujours plus facile à attaquer qu’un réseau interne).

Docker est également le projet d’une communauté Open source : il continue d’évoluer même si Kubernetes, son concurrent, semble actuellement lui voler la vedette. Il reste cependant un excellent choix pour se familiariser avec la technologie de containers !