Que recherchez-vous ?

L’essentiel sur Docker

Middleware 07 juin 2021
Publié par : Florent Jougla

Docker est une plateforme de conteneurisation open source destinée aux développeurs et administrateurs système. Pensée pour créer, expédier et exécuter des applications, elle fonctionne en toute transparence, quel que soit l’environnement. Ses atouts ? Un seul système d'exploitation et des ressources partagées. Échelonner des conteneurs hébergés sur des hôtes Docker et coder des applications depuis sa machine n’aura jamais été aussi simple et rapide pour améliorer significativement sa productivité de développement. Mais qu’en est-il de la sécurité ? Décodage.

L’essentiel sur Docker

Comment fonctionne la technologie Docker ?

Envisagée initialement pour Linux, Docker fonctionne désormais avec d’autres OS comme Windows et MacOs, ou encore Amazon Web Services et Microsoft Azure.
Docker est doté d’un bon niveau de portabilité, et dispose d’une palette d’outils performants dédiés à la gestion de containers et au clustering.

Alors que l’automatisation de Docker facilite le déploiement des containers, Docker Application permet la mise en œuvre des applications multi-container sur la plupart des infrastructures. Il est ainsi possible de les créer, les copier et les déplacer d’un environnement à l’autre, avant de les déployer en mode multi-cloud. Une technologie idéale lorsqu’il s’agit de développer des applications pour le Cloud.

Contrôle de l’image et gain de temps

Une image Docker est un modèle comprenant notamment des codes d’application, des bibliothèques et des outils permettant d’exécuter une application. Grâce à une série de couches assemblées formant une image unique, la technologie Docker garantit un contrôle total des différentes versions. Comment ? Quels en sont les avantages ?

  • Docker crée une nouvelle couche (layer) à chaque modification de l’image ou exécution de commande (run, copy, etc.). Cette image peut ensuite être réutilisée pour construire de nouveaux conteneurs.
  • Les modifications sont partagées entre les différentes images, afin de conserver de bonnes performances, en termes de vitesse, de poids et d’efficacité.
  • Il est très facile de revenir à une version précédente en cas d’incident. En permettant le retour en arrière, c’est une manière inédite de développer qui est proposée.
  • 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.
  • Inutile de redémarrer le système à chaque déplacement ou ajout de conteneur : créer ou détruire est très facile et très rapide. Par conséquent, il est important de contrôler minutieusement la prolifération de conteneurs uniques, afin d’éviter d’en complexifier inutilement la gestion.

La sécurité, une problématique permanente

Si les fonctionnalités de Docker sont héritées du noyau Linux, elles ne permettent pas pour autant de profiter de tous les avantages d’UNIX. Comme en témoigne l’absence de cron ou de syslog au sein du container. Comparé au Linux traditionnel, le nettoyage des processus a par ailleurs ses limites s’il n’est pas configuré dès le départ.

Avec Docker, une faille ou une attaque sur l’OS peut compromettre l’ensemble des containers hébergés : chaque container restant isolé mais partageant le même système d’exploitation. Si un pirate parvenait à prendre le contrôle des sous-systèmes, il pourrait corrompre l’hôte lui-même car son noyau 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 de Docker peut engendrer des problèmes de sécurité. En effet, 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 le projet d’une communauté Open source. Il évolue donc en permanence et reste la référence pour se familiariser avec la technologie de containers. On le compare souvent à la ressource Kubernetes de Google, mais ces deux outils s’avèrent plus complémentaires que concurrents. En effet, Docker est surtout utilisé dans la phase de build des images, et pour faire tourner des applications très simple. Le passage à Kubernetes se fait ensuite très rapidement pour la phase de production. Et même si Kubernetes a prévu d’arrêter la prise en charge du container runtime Docker en fin d’année 2021, cette annonce n’aura pas d’impact sur les développeurs, qui pourront continuer à utiliser Docker pour build les images des microservices.

À propos de l’auteur·e

Florent Jougla

Expert en Supervision - Sécurité & conformité

D’autres Articles

Proposez un sujet autour des enjeux des systèmes d’information.

Devenez membre de notre communauté d’experts inspirants.