Par Maxime Jumelle
CTO & Co-Founder
Publié le 23 févr. 2022
Catégorie Cloud / DevOps
Docker est une plateforme de conteneurs open source qui permet de créer des environnements isolés sur un seul et même système. Il permet de faciliter le déploiement et la mise à l'échelle au niveau applicatif. Aujourd'hui, Docker est la plateforme la plus populaire et la plus utilisée, en grande partie grâce à sa simplicité d'utilisation.
Mais pourquoi Docker est devenu aussi populaire ? Et surtout, c'est quoi la conteneurisation ? Est-ce que cela a un rapport avec la virtualisation ? Voyons tout cela en détails.
Pour bien comprendre l'intérêt de Docker, il nous faut tout d'abord revenir au principe de virtualisation.
Lorsque l'on parle de virtualisation, il s'agit souvent de virtualisation matérielle. C'est ce principe qui permet de démarrer et exécuter plusieurs systèmes d'exploitation invités sur un système hôte commun.
Une machine virtuelle (ou VM pour virtual machine) est une émulation d'un système d'exploitation dans une machine hôte ou un serveur. Ainsi, grâce à la virtualisation, on peut exécuter plusieurs machines virtuelles au sein d'une seule et même machine hôte.
Le concept de machine virtuelle a été décisif dans la popularité du Cloud Computing. Les serveurs que l'on provisionne dans le Cloud sont justement des systèmes virtualisés, en colocation avec d'autres systèmes sur lesquels nous ne pouvons pas communiquer. Ainsi, en virtualisation matérielle, un hyperviseur gère les ressources allouées à chaque système virtuel.
Dans certains cas, il est possible de demander à ce qu'un serveur soit dédié, c'est-à-dire qu'il ne soit pas une machine virtuelle, mais cela coûte plus cher.
Il y a plusieurs intérêts à utiliser des machines virtuelles.
Seulement, dans un contexte de microservices omniprésents dans le Cloud, les machines virtuelles ont présentés des limites.
À lire : découvrez notre formation DevOps Engineer
Tout d'abord, bien qu'elles soient rapides à lancer par rapport à un serveur physique, elles restent tout de même lentes en comparaison avec des applications, qui doivent être capables de se lancer en seulement quelques secondes.
Ensuite, les machines virtuelles ne peuvent pas être traitées comme une ressource atomique (comme un fichier). En effet, il faut rattacher à une machine virtuelle un disque dur, un système d'exploitation, des informations réseaux, etc. Tout ceci rend la machine virtuelle lourde à manipuler de manière dynamique.
Pour terminer, les systèmes d'exploitation sur les machines virtuelles intègrent de nombreux composants et logiciels qui ne sont pas indispensables pour l'application que l'on souhaite exécuter.
C'est alors que les conteneurs ont fait leur apparition pour pallier à tous ces problèmes.
Un conteneur utilise les mêmes logiques de fonctionnement que la virtualisation, mais s'adapte aux cas des applications.
Cette approche ouvre de nouvelles possibilités sur le déploiement applicatif.
C'est sur ce point que Docker, plateforme open source de conteneurs créée en 2013, apporte une nouveauté. La virtualisation n'est plus réalisée par l'hyperviseur sur le système hôte, mais directement par la plateforme Docker. Ainsi, Docker permet de conteneuriser des applications et de les isoler au même titre qu'un hyperviseur isole des systèmes d'exploitation.
En d'autres termes, nous pourrons exécuter plusieurs applications, isolés logiquement, sur un seul et même système avec Docker. Cela permet d'éviter les problèmes de conflits qu'il pourrait y avoir si on exécutait plusieurs applications sur un système, mais qui nécessitent des versions logicielles différentes.
Docker est aussi multi-plateforme. Bien qu'il soit majoritairement utilisé sur les systèmes Unix, il est possible d'exécuter des conteneurs Docker sous Windows également, notamment grâce à son environnement runtime.
Avant d'exécuter un conteneur, il faut créer une image. Cette image contient un système packagé avec des applications installées dessus. C'est équivalent à un système compressé que l'on peut exécuter sous forme de conteneurs.
Attention donc à ne pas confondre : un conteneur est une instance d'une image, une exécution de cette image sur un système. Au même titre, une machine virtuelle est l'exécution d'une image système (Linux, Windows) sur un hyperviseur.
Pour créer cette image, on rédige un fichier texte appelé Dockerfile, qui contient toutes les instructions permettant d'installer et de configurer le système qui sera packagé.
Dans ce Dockerfile, on retrouve alors les commandes de récupérations de paquets, de configuration de runtimes (langages, utilisateurs), de configuration réseau ou encore de variables d'environnement.
Les conteneurs peuvent être exécutés sur une machine virtuelle. Mais dans cette configuration, on retrouve les mêmes difficultés d’administration, de maintenance, de configuration, etc.
Pour cela, on utilise en pratique des plateformes d’orchestration de conteneurs, qui vont gérer à notre place la partie infrastructure. Parmi les plateformes d’orchestration les plus connues, on retrouve Kubernetes qui a révolutionné le monde des conteneurs.
Tout comme les machine virtuelles, les conteneurs se basent sur des images qui correspondent à des systèmes d’exploitation avec ou sans installations supplémentaires. On dispose alors du même degré de configuration que sur les VM.
À découvrir : notre formation DevOps Engineer
L'utilisation d’un conteneur est privilégié dans les situations suivantes.
Pour conclure, on utilise un conteneur pour les applications fonctionnant sous forme de microservices (API, backends) et lorsque l’on souhaite interagir avec de nombreux outils de déploiement et d’automatisation.
Vous souhaitez vous former au Cloud / DevOps ?
Articles similaires
28 févr. 2024
Pour de nombreuses entreprises, innover chaque jour en proposant des applications à ses utilisateurs est un sujet primordial. Pour autant, cette course au déploiement continu de nouvelles applications nécessite des compétences bien particulières sur les architectures Cloud, l'automatisation de projets et la supervision. C'est à partir de ce moment qu'intervient le rôle de l'ingénieur DevOps dans les entreprises.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
23 févr. 2024
Dans le monde du DevOps, les conteneurs sont rapidement devenus des incontournables, aussi important que les machines virtuelles. Des plateformes de conteneurisation comme Docker ont permis de simplifier et d'accélérer la création d'image et l'exécution de conteneurs sur différents systèmes, à portée de tous.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
16 févr. 2024
Dans l'approche GitOps, il existe de nombreux outils permettant d'exécuter des pipelines CI/CD : certains se concentrent uniquement sur la partie intégration continue, d'autres avec le déploiement en plus. S'il y en a un qui est considéré comme l'un des plus matures et des plus robustes, c'est bien GitLab.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés