Jump to section

Docker, qu'est-ce que c'est ?

Copier l'URL

Global Tech Trends 2024

Le monde des technologies a connu une transformation numérique rapide, faisant évoluer la priorité que les entreprises accordent à des domaines clés de leur activité. Pour la dixième année, notre rapport Global Tech Trends met en lumière six investissements informatiques ou non informatiques prioritaires, ainsi que trois obstacles majeurs au progrès.

Docker désigne plusieurs éléments, à savoir un projet d'une communauté Open Source, les outils issus de ce projet Open Source, l'entreprise Docker Inc. qui constitue le principal soutien de ce projet, ainsi que les outils que l'entreprise prend officiellement en charge. Le fait que ce terme soit utilisé aussi bien pour désigner les technologies que l'entreprise peut prêter à confusion.

Voici les différentes définitions :

  • Le logiciel Docker est une technologie de conteneurisation qui permet la création et l'utilisation de conteneurs Linux®.
  • La communauté Open Source Docker a pour but d'améliorer ces technologies en faveur des utilisateurs.
  • L'entreprise Docker Inc. s'appuie sur le travail de la communauté Docker pour développer ses produits. En échange, elle y contribue en renforçant la sécurité et en partageant ses avancées. Elle assure ensuite la prise en charge des technologies optimisées et renforcées pour les entreprises clientes.

Grâce à Docker, les conteneurs deviennent des machines virtuelles très légères et modulaires qui vous offrent une grande flexibilité pour créer, déployer, copier des conteneurs et les déplacer d'un environnement à un autre. Vos applications sont ainsi optimisées pour le cloud.

 

 

 

 

 

 

 

 

Même s'ils sont souvent confondus, Docker et les conteneurs Linux traditionnels sont deux choses bien différentes. À l'origine, la technologie Docker s'appuyait sur la technologie LXC (que beaucoup associent aux conteneurs Linux traditionnels), mais ce n'est plus le cas aujourd'hui. En effet, si LXC offrait une certaine légèreté en matière de virtualisation, elle présentait toutefois des lacunes dans l'expérience de développement et d'utilisation. La technologie Docker permet non seulement de gérer des conteneurs, mais aussi de faciliter leur création et leur conception, ainsi que de distribuer et de contrôler la version des images, entre autres.

Les conteneurs Linux traditionnels utilisent un système d'initialisation capable de gérer plusieurs processus, ce qui permet à plusieurs applications de s'exécuter comme une seule et unique application. La technologie Docker privilégie la division des applications en processus et fournit les outils pour le faire. Cette approche granulaire présente plusieurs avantages.

Modularité

Avec Docker, il est possible de séparer un élément d'une l'application afin de le modifier ou de le réparer sans arrêter toute l'application. En plus de cette approche basée sur les microservices, vous pouvez partager des processus entre différentes applications, de la même manière que dans une architecture orientée services (SOA).

Couches et contrôle de version des images

Chaque image Docker se compose de plusieurs séries de couches regroupées dans une seule image. Une nouvelle couche est créée à chaque modification de l'image ou lorsqu'un utilisateur exécute une commande telle que run ou copy.

Docker réutilise ces couches pour construire de nouveaux conteneurs, ce qui permet d'accélérer le processus de création. Les modifications intermédiaires sont partagées entre les images pour améliorer la vitesse, la taille et l'efficacité. Élément indissociable des couches, le contrôle de version permet d'obtenir un journal qui consigne toutes les modifications et vous offre ainsi un contrôle total sur vos images de conteneur.

Restauration

La restauration est sans doute l'un des plus grands avantages des couches. Puisque chaque image est composée de couches, si l'itération actuelle d'une image ne vous plaît pas, vous pouvez restaurer la version précédente. Cette fonction favorise le développement agile et vous aide à mettre en œuvre les pratiques d'intégration et de déploiement continus (CI/CD) au niveau des outils.

Déploiement rapide

Autrefois, l'installation, la mise en marche, le provisionnement et la mise à disposition du matériel prenaient plusieurs jours et impliquaient des efforts et des dépenses importants. Avec les conteneurs Doker, le déploiement s'effectue en quelques secondes seulement. En créant un conteneur pour chaque processus, vous pouvez partager rapidement tous vos processus avec les nouvelles applications. De plus, vous n'avez plus besoin de démarrer un système d'exploitation pour ajouter ou déplacer un conteneur, ce qui réduit considérablement le délai de déploiement. Ainsi, vous pouvez créer et éliminer les données de vos conteneurs facilement, à moindre coût, et sans inquiétude.

La technologie Docker propose donc une approche davantage tournée vers la granularité, le contrôle et les microservices, qui met l'accent sur l'efficacité.

Création d'applications conteneurisées : 5 éléments à partager avec votre hiérarchie

Docker est capable de gérer des conteneurs uniques à lui seul. Plus vous utilisez de conteneurs et d'applications conteneurisées et fragmentées, plus la gestion et l'orchestration deviennent complexes. Au bout d'un moment, il est nécessaire de regrouper les conteneurs afin de fournir les services (réseau, sécurité, télémétrie, etc.) sur la totalité d'entre eux. C'est précisément à ce niveau qu'intervient la technologie Kubernetes.

 

La technologie Docker ne fournit pas les mêmes fonctionnalités UNIX que les conteneurs Linux traditionnels, notamment la possibilité d'utiliser des processus tels que cron ou syslog dans le conteneur, en parallèle à l'application. Elle ne permet pas non plus le nettoyage des processus petits-enfants une fois le processus enfant terminé. Pour remédier à ces lacunes, vous pouvez modifier le fichier de configuration et y ajouter ces fonctionnalités, mais cela n'est pas toujours évident au premier abord.

De plus, certains sous-systèmes et appareils Linux ne présentent pas d'espaces de noms. Il s'agit entre autres de SELinux, de Cgroups et d'autres appareils /dev/sd*. Cela signifie que si un pirate prenait le contrôle de ces sous-systèmes, l'hôte serait compromis. Afin de préserver sa légèreté, le noyau de l'hôte est partagé avec les conteneurs, ce qui ouvre une brèche de sécurité. Ce n'est pas le cas avec les machines virtuelles, car elles sont bien mieux isolées du système hôte.

 

Par ailleurs, le démon Docker peut également poser des problèmes de sécurité. En effet, pour utiliser et exécuter des conteneurs Docker, vous devrez probablement utiliser le démon Docker, un environnement d'exécution persistant pour les conteneurs. Celui-ci nécessite des privilèges root, il est donc important de surveiller l'accès à ces processus et de bien choisir leur emplacement. Par exemple, un démon local présente une surface d'attaque plus petite qu'un démon hébergé dans un emplacement public tel qu'un serveur web.

 

Vous souhaitez assister à des talks, des retours d'expérience ou simplement échanger avec des utilisateurs d'OpenShift ?

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.

En savoir plus sur les conteneurs

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées

Cours gratuit

Développement d'applications cloud-native avec des architectures de microservices