docker tout savoir

Docker : tout savoir sur la plateforme de containérisation

Docker est la plateforme de containers la plus populaire et la plus utilisée. Découvrez tout ce que vous devez savoir sur cette solution de containerisation : sa définition, son fonctionnement, ses avantages et inconvénients, ou encore quels sont ses principaux concurrents.

Les machines virtuelles (VM) sont de plus en plus utilisées par les entreprises. Une VM est un environnement de système d’exploitation ou d’application installé sur logiciel. Elle permet à l’utilisateur de profiter de la même expérience que sur une machine physique, avec plusieurs avantages.

Il est notamment possible de lancer plusieurs environnements d’OS sur la même machine, en les isolant les uns des autres. De même, la virtualisation permet de réduire les coûts au sein d’une entreprise en diminuant le nombre de machines virtuelles nécessaires. Les besoins en énergie s’en trouvent aussi atténués. Les backups et les restaurations s’en trouvent aussi simplifiés.

Cependant, les hyperviseurs de machines virtuelles reposent sur une émulation du hardware, et requièrent donc beaucoup de puissance de calcul. Pour remédier à ce problème, de nombreuses firmes se tournent vers les containers, et par extension vers Docker.

Qu’est-ce qu’un container ?

container définition

Avant d’aborder Docker, il est indispensable de rappeler ce qu’est une image container. Il s’agit d’un ensemble de processus logiciels léger et indépendant, regroupant tous les fichiers nécessaires à l’exécution des processus : code, runtime, outils système, bibliothèque et paramètres. Ils peuvent être utilisés pour exécuter des applications Linux ou Windows.

Les containers sont donc proches des machines virtuelles, mais présentent un avantage important. Alors que la virtualisation consiste à exécuter de nombreux systèmes d’exploitation sur un seul et même système, les containers se partagent le même noyau de système d’exploitation et isolent les processus de l’application du reste du système.

Pour faire simple, plutôt que de virtualiser le hardware comme l’hyperviseur, le container virtualise le système d’exploitation. Il est donc nettement plus efficient qu’un hyperviseur en termes de consommation des ressources système. Concrètement, il est possible d’exécuter près de 4 à 6 fois plus d’instances d’applications avec un container qu’avec des machines virtuelles comme Xen ou KVM sur le même hardware.

Docker : qu’est-ce que c’est ?

Il s’agit d’une plateforme logicielle open source permettant de créer, de déployer et de gérer des containers d’applications virtualisées sur un système d’exploitation. Les services ou fonctions de l’application et ses différentes bibliothèques, fichiers de configuration, dépendances et autres composants sont regroupés au sein du container. Chaque container exécuté partage les services du système  d’exploitation.

Initialement créé pour fonctionner avec la plateforme Linux, Docker fonctionne désormais avec d’autres OS tels que Microsoft Windows ou Apple macOS. On compte également des versions de la plateforme conçues pour Amazon Web Services et Microsoft Azure.

Docker : quelles sont les fonctionnalités ?

La plateforme de conteneurisation repose sur sept composants principaux. Le Docker Engine est un outil client-serveur sur lequel repose la technologie de container pour prendre en charge les tâches de création d’applications basées container. Le moteur crée un processus daemon server-side permettant d’héberger les images, les containers, les réseaux et les volumes de stockage. Ce daemon fournit aussi une interface SLI client-side permettant aux utilisateurs d’interagir avec le daemon via l’API de la plateforme.

Les containers créés sont appelés Dockerfiles. Le composant Docker Compose permet de définir la composition des composants au sein d’un container dédié. Le Docker Hub est un outil SaaS permettant aux utilisateurs de publier et de partager des applications basées container via une bibliothèque commune.

Le mode Docker Swarm du Docker Engine prend en charge l’équilibrage des charges des clusters . Ainsi, les ressources de plusieurs hôtes peuvent être rassemblées pour agir comme une seul ensemble. Ainsi, les utilisateurs peuvent rapidement échelonner le déploiement de containers.

Docker : quels sont les avantages et les inconvénients ?

docker avantages

La plateforme Docker présente de nombreux avantages. Elle permet de composer, de créer, de déployer et d’échelonner rapidement des containers sur les hôtes Docker. Elle offre aussi un haut degré de portabilité, ce qui permet aux utilisateurs de s’enregistrer et de partager des containers sur une large variété d’hôtes au sein d’environnements publics et privés.

Par rapport aux machines virtuelles, Docker présente également plusieurs avantages. Elle permet de développer des applications de façon plus efficiente, en utilisant moins de ressources, et de déployer ces applications plus rapidement.

Cependant, elle présente aussi plusieurs inconvénients. Il peut être difficile de gérer de façon efficiente un grand nombre de containers simultanément. De plus, la sécurité être un problème. Les containers sont isolés, mais partagent le même système d’exploitation. De fait, une attaque ou une faille de sécurité sur l’OS peut compromettre tous les containers. Pour minimiser ce risque, certaines entreprises exécutent leurs containers au sein d’une machine virtuelle.

MAJ : Docker a rencontré une faille de sécurité qui a touché près de 5 % des utilisateurs. Près de 190 000 d’entre eux ont vu les données de leurs containers exposées après un accès non autoris à base de données Hub. L’organisation a demandé aux entreprises et aux personnes concernées de changer leur mot de passe.

Quelles sont les alternatives ?

Docker n’est pas la seule plateforme de container sur le marché, mais elle demeure la plus utilisée. Son principal concurrent est CoreOS rkt. Cet outil profite du support de SELinux, ce qui le sécurise. Parmi les autres plateformes majeures, on compte Canonical LXD, ou encore Virtuozzo OpenVZ, la plus ancienne plateforme de container.

On peut aussi évoquer l’écosystème d’outils qui fonctionnent avec la plateforme pour des tâches telles que le clustering ou la gestion de containers. On peut citer comme exemple Kubernetes, l’outil de Container Orchestration open source créé par Google.

coreos rkt

Docker : les chiffres du succès

La version 1.0 de Docker fut lancée en juin 2014, dans le but de faciliter l’utilisation des containers. Très rapidement, la plateforme a rencontré un franc succès auprès de nombreuses entreprises. Aujourd’hui, selon les créateurs de Docker, plus de 3,5 millions d’applications ont été containerisées en utilisant cette technologie. L’on compte pas moins de 37 milliards d’applications containerisées téléchargées.

De même, d’après le système de monitoring cloud DataDog, 18,8% des utilisateurs avaient adopté la plateforme en 2017. De son côté, RightScale estime que l’adoption de la plateforme dans l’industrie du Cloud a augmenté de 35% en 2017 à 49% en 2018. Des géants comme Oracle et Microsoft l’ont adopté, au même titre que presque toutes les entreprises du Cloud.

Selon de 451 Research, l’essor de Docker n’est pas près de s’arrêter. Ces analystes estiment que le marché des containers va littéralement exploser d’ici 2021. Les entreprises vont multiplier les revenus par 4 avec un taux de croissance annuel de 35%, passant de 749 millions de dollars en 2016 à 3,4 milliards de dollars en 2021.

Docker Entreprise 3.0

Au cours de la DockerCon 2019 de mai dernier, Docker a officialisé la troisième version de sa plateforme Docker Entreprise. En version bêta, celle-ci profite d’un environnement de développement d’application containerisé directement embarqué au sein de la plateforme globale de l’entreprise. Les développeurs peuvent coder depuis leur ordinateur, puis déployer une solution en mode multi-cloud. Des fonctionnalités d’automatisation facilitent le déploiement des containers, tandis que Docker Application  sert à déployer des applications multi-containers dans la plupart des infrastructures. Cette approche vise à rendre flexible leur installation et leur gestion.

Enfin, Docker Kubernetes Service permet de stocker les éléments codés sur un ordinateur ou une station avant de les opérer dans les serveurs en production. L’outil est compatible avec les versions Compose, Kubernetes, YAML, Helm charts et Swarm de la société.

Cloud Native Application Bundle passe en 1.0

Cloud Native Application Bundle ou CNAB est une spécification pour créer des applications multicontainers. Annoncée au mois de décembre dernier, cette fonctionnalité est désormais en version 1.0. Celle-ci consiste à définir comment différents composants d’applications basées sur le cloud sont rassemblés. Microsoft, Bitnami (racheté par VMware), HashiCorp, Intel, Pivotal et Datadog ont participé à ce projet.

Ainsi, les développeurs profitent d’une meilleure interaction entre les containers Docker et les outils comme Kubernetes YAML, Azure Resources Manager Template ou encore Helm charts. Ceux-ci forment un package possiblement protégé par une clé de chiffrement. Ce package devient alors un moyen standard de déployer des applications containerisées dans des environnements cloud ou sur site.

Attention aux malwares sur vos containers Docker !

docker graboid worm

Un malware de type crypto-jacking worm a été détecté dans les containers d’application Docker. C’est la division de cybersécurité de Palo Alto Network, Unit 42, qui a découvert ce logiciel malveillant la première.

Graboid a été identifié comme le premier crypto-jacking worm découvert sur Docker Hub. Plus précisément, il a été repéré sur l’édition communauté de Docker Engine. En revanche Docker Enterprise n’est pas concerné.

Comme tous les vers informatiques, ce worm est capable de se propager via les images mal sécurisées sur les serveurs. Or, sachant que les logiciels de cybersécurité n’inspectent généralement pas les données à l’intérieur des containers d’application, ce malgiciel s’avère particulièrement dangereux…

Les images corrompues ont été retirées de Docker Hub directement après avoir été signalées par Palo Alto Networks. Le directeur de la sécurité de Docker, Justin Cormack, invite les utilisateurs à ne pas modifier les paramètres par défaut du Docker Engine qui empêchent ce type d’attaque en refusant l’accès à distance.

Selon Unit 42, environ 2000 moteurs Docker non sécurisés ont été exposés sur le web. Une telle attaque, plus sophistiquée, pourrait avoir des conséquences encore plus désastreuses. Il est donc impératif pour les entreprises de bien sécuriser leurs hôtes Docker…

Des images Docker malveillantes utilisées pour le minage de Monero

En août 2021, l’entreprise de cybersécurité Aqua Security a fait une sinistre découverte. Une campagne de cryptomining utilisait des images Docker corrompues pour détourner les ressources informatiques des entreprises. L’objectif ? Miner des cryptomonnaies, et plus précisément du Monero.

Les images corrompues étaient téléchargées vers un dossier Docker Hub légitime. Au total, les chercheurs ont identifié cinq images de conteneur sur Docker Hub pouvant être utilisées dans le cadre d’une attaque ciblant les environnements Cloud-Native.

Selon Assaf Morag, Data Analyst en chef chez Aqua Security, les images malveillantes ont été découvertes par les chercheurs après une analyse manuelle classique des images de conteneur : «  nous partageons régulièrement ce genre d’informations avec Docker Hub et d’autres registres ou dépôts publics comme GitHub et Bitbucket « .

Selon lui,  » en se basant sur les informations que nous partageons avec Docker Hub, ils mènent leur enquête et décident s’il faut fermer ou non le namespace. Dans ce cas particulier, ils ont fermé leurs namespaces le jour où nous les avons contactés. Leur temps de réaction est absolument formidable « .

Les trois premiers conteneurs découverts par les chercheurs (thanhtudo, thieunutre et chanquaa) exécutent le script dao.py. Il s’agit d’un script Python, utilisé lors de plusieurs campagnes par le passé, exploitant le squatting de typo pour dissimuler des images de conteneurs malveillantes dans Docker Hub.

Les deux autres images de conteneurs sont appelées openjdk et golang. Pour l’heure, les chercheurs n’ont toutefois pas trouvé de preuve qu’elles ont été utilisées lors d’attaques. Leur objectif est de mettre en lumière ces images de conteneurs au nom trompeur,  » de dire qu’elles contiennent un cryptominer exécuté dès que vous lancez le conteneur même si le namespace ne l’indique pas « .

Ces conteneurs malveillants sont conçus pour être facilement confondus avec des images de conteneur officielles, même si les comptes Docker Hub qui en sont responsables ne sont pas officiels. Selon les chercheurs,  » une fois lancés, ils ressemblent à des conteneurs inoffensifs. Le xmrig binaire (MD5: 16572572588c2e241225ea2bf6807eff) est exécuté, et détourne les ressources pour le minage de cryptomonnaie « .

D’après Morag, des techniques d’ingénierie sociale peuvent être utilisées pour piéger une personne et l’inciter à utiliser ces images de conteneur :  » je pense que vous ne vous connecterez jamais à une page web  » mybunk . com « , mais si le hacker vous envoie un lien vers ce namespace, cela peut arriver « . En effet, ces images de conteneur ont accumulé chacun plus de 10 000 pulls.

On ignore encore qui est derrière cette campagne. Selon les chercheurs de Aqua Security, le compte Docker Hub malveillant a été désactivé après que Docker ait été notifié. Toujours selon Morag, ces conteneurs ne sont pas directement contrôlés par un hacker, mais un script à l’entrypoint/cmd est conçu pour exécuter une attaque automatisée et miner la cryptomonnaie.

Lorsqu’une personne exécute ces images de conteneur, un script charge la configuration de minage et exécute un binaire conçu pour communiquer avec le bassin de minage et exécuter le script de minage de crypto XMRIG.

Afin de limiter les risques, les chercheurs de Aqua Security recommandent aux entreprises d’améliorer leurs mesures défensives pour éviter d’être victimes de ce type d’attaques. Il faut prendre conscience que  » les hackers ciblent de plus en plus les chaînes logistiques logicielles des entreprises, et deviennent meilleurs pour dissimuler leurs attaques « .

Lorsque vous exécutez des conteneurs depuis un registre public, il est recommandé de  » traiter le registre en tant que source avec un haut risque d’attaques sur la supply chain « . Les hackers tentent de piéger les développeurs pour le pulling d’images malveillantes en les déguisant en images populaires. Pour réduire le risque, «  créez un registre interne tenu à jour pour les images de conteneur de base et limitez qui peut accéder aux registres publics « . Mettez aussi en place des règles pour s’assurer que les images de conteneur soient validées avant d’être intégrées au registre interne.

Bien souvent, les attaques sophistiquées sont en mesure d’éviter la détection lorsque les organisations utilisent un scanning statique ou basé sur des signatures ou des patterns.  » Par exemple, les hackers peuvent échapper à la détection en intégrant du code aux images de conteneurs qui téléchargent des malwares uniquement pendant le runtime « .

Pour cette raison,  » en plus du scanning de vulnérabilités sur les images de conteneurs externes, il est important d’utiliser des outils pour analyser dynamiquement le comportement du conteneur dans un bac à sable et d’identifier les vecteurs d’attaque qui ne seraient pas détectés avec un scanning de code statique « . Enfin, les chercheurs recommandent de signer numériquement les images de conteneur ou d’utiliser d’autres méthodes pour maintenir l’intégrité des images et s’assurer que les images de conteneur utilisées soient les mêmes que celles ayant été approuvées.

Docker et Kubernetes

Alors que Docker permet de créer des conteneurs, Kubernetes permet l’orchestration et la gestion de ces conteneurs. Il est possible d’utiliser Docker pour le packaging et le shipping d’une application, et Kubernetes pour le déploiement et le scaling de cette application.

Les startups et les petites entreprises avec peu de conteneurs peuvent généralement les gérer sans Kubernetes, mais cela devient beaucoup plus difficile lorsque le nombre de conteneurs augmente.

Ensemble, ces deux outils constituent une part essentielle de l’architecture Cloud moderne et de la transformation numérique. Ils sont désormais couramment utilisés conjointement pour accélérer le déploiement et la relaxe d’applications.

Docker revend sa division Entreprise à Mirantis, et se refocalise sur les outils de développement Cloud

En novembre 2019, Mirantis a acquis Docker Enterprise, sa Docker Enterprise Technology Platform et toute la propriété intellectuelle associée : le Docker Enterprise Engine, le Docker Trusted Registry, le Docker Unified Control Plane et le Docker CLI.

De même, 300 employés de Docker ont rejoint Mirantis qui récupère aussi 700 clients d’entreprise. L’objectif de la firme est de pouvoir rivaliser avec VMware ou IBM / Red Hat.

Suite à cette acquisition, Docker a levé 35 millions de dollars auprès de Benchmark Capital et Insight Partners. La firme a aussi nommé un nouveau CEO : Scott Johnston.

Docker a fait le choix de revenir à ses racines, en proposant des services Cloud permettant aux développeurs de découvrir rapidement de technologies de développement d’application, de partager leurs applications avec leurs équipes, et d’exécuter ces applications sur n’importe quel endpoint Kubernetes localement ou sur le Cloud.

Docker et le Cloud : les partenariats avec AWS et Microsoft Azure

Au fil des derniers mois, suite à l’acquisition de sa division d’entreprise par Mirantis, Docker a noué des partenariats avec les géants du Cloud. En mai 2020, un partenariat avec Microsoft a été annoncé pour simplifier l’exécution de conteneurs Docker sur le cloud Azure.

L’objectif est une meilleure intégration entre les Docker et les outils de développeur Azure tels que Visual Studio Code et Azure Container Instances (ACI). Cette intégration permettre d’inclure les conteneurs Docker plus rapidement, plus facilement et de façon plus efficace lors du développement d’applications avec les outils Microsoft.

En juillet 2020, un partenariat avec AWS a aussi été annoncé. Là encore, l’objectif est une meilleure intégration entre les outils Compose et Desktop de Docker et les services AWS ECS et ECS on AWS Fargate.

Auparavant, il était difficile d’exécuter des fichiers Compose sur ECS. Désormais, les deux entreprises ont simplifié le processus afin de permettre d’alterner facilement entre les conteneurs exécutés localement et sur ECS.

Là encore, l’objectif est de simplifier la construction et le déploiement d’applications conteneurisées sur AWS. Il est désormais plus facile de déployer les applications en conteneurs depuis un environnement Docker local vers Amazon ECS. Les développeurs peuvent ainsi déployer leurs applications plus rapidement et se focaliser sur le développement plutôt que sur le déploiement Cloud…

DockerCon Live 2021 :  Docker se focalise sur la sécurité des conteneurs

En mai 2021, lors de l’évènement virtuel DockerCon Live 2021, Docker a présenté plusieurs nouvelles solutions. L’outil Docker Developments Environments permet aux développeurs de créer automatiquement une instance virtuelle de leur environnement de développement, pour pouvoir le partager avec les autres membres d’une équipe.

Le Docker Compose offre une meilleure intégration avec la ligne d’interface de commande (CLI) Docker afin d’accélérer le déploiement d’applications sur les services  Cloud. En outre, les Scoped Personal Access Tokens permettent aux développeurs de définir différents types de tokens d’accès pour les images de conteneur pour chaque utilisateur.

Autre annonce marquante de cette conférence : Datadog, Red Hat et VMware ont joint le programme Docker Verified Publisher. Ce programme permet aux utilisateurs d’accéder à des conteneurs de vendeurs tiers. En outre, les Docker Official Images peuvent désormais être téléchargées via les registres Amazon Web Services (AWS) et Mirantis, en guise d’alternative au DockerHub.

Selon le CEO Scott Johnston, Docker Inc cherche à résoudre deux des principaux problèmes que rencontrent les entreprises lors de la création d’applications conteneurisées. Tout d’abord, le télétravail imposé par la crise du COVID-19 nuit à la collaboration entre les développeurs. Pour contribuer à résoudre ce problème, Docker automatise le processus de partage d’une instance virtuelle d’environnement de développement Docker entre les développeurs.

Toujours selon Johnston, le second problème principal de Docker concerne la sécurité des chaînes logistiques de logiciels. Les cybercriminels utilisent désormais fréquemment les conteneurs Docker pour distribuer des malwares. Le programme Docker Verified Publisher va permettre aux développeurs de s’assurer qu’ils n’utilisent pas de conteneurs contaminés par un malware.

Pour l’heure, seuls 160 fournisseurs de conteneurs ont accepté de participer à cette initiative. Toutefois, le CEO précise que 25% des conteneurs téléchargés via les registres de la firme proviennent de ces vendeurs.

Au total, selon Docker Inc, 13 milliards de pulls d’image sont effectués chaque mois à partir de 8 millions de dépôts résidant sur le Docker Hub et par plus de 13 millions de développeurs. Selon Johnston, dans un contexte où les fuites de données massives se succèdent, l’accent est mis plus que jamais sur la sécurité des applications.

Laisser un commentaire

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

Pin It on Pinterest