Déployez vos applications en toute légèreté avec Docker
Définition de Docker
Créé en 2013 par Solomon Hykes, Docker est un logiciel libre permettant de lancer des applications dans des conteneurs logiciels. Docker permet d’embarquer une application dans un ou plusieurs conteneurs logiciels qui pourra s’exécuter sur n’importe quel serveur machine, qu’il soit physique ou virtuel. Docker peut fonctionner sous Linux comme Windows Server.
Docker c’est donc, avant tout, une technologie qui a pour but et objectif de faciliter les déploiements d’applications et la gestion de l’infrastructure liée.
Le fonctionnement de Docker
Techniquement, Docker étend le format de conteneur Linux standard (LXC) grâce à une API fournissant une solution de virtualisation qui exécute les processus de façon isolée. Pour cela, Docker utilise entre autres LXC, cgroups et le noyau Linux.
La technologie de conteneur de Docker peut être utilisée pour étendre des systèmes distribués de façon qu’ils s’exécutent de manière autonome depuis une seule machine physique.
En termes d’architecture, Docker fonctionne sur une architecture client <> serveur. Plus précisément, le client Docker communique avec le Docker Deamon qui fait tourner le Docker Engine. Le client Docker et le Daemon Docker pouvant (ou non) tourner sur des machines différentes.
Côté fonctionnement, sur Docker, un conteneur est lancé en exécutant une image. Une image est un package qui inclut tout ce qui est nécessaire à l’exécution d’une application, à savoir : le code, l’exécution, les variables d’environnement, les bibliothèques et les fichiers de configuration.
Concrètement, l’image Docker est une image prête à l’emploi, avec des instructions pour la création de conteneur.
Ces images toutes prêtes sont déjà existantes dans le Docker Hub créées par les éditeurs et/ou par la communauté !
Machines Virtuelles VS Docker
On pourrait penser que les conteneurs ( = fonctionnement de Docker) et les machines virtuelles fonctionnent de la “même manière” et sont la “même chose” hors ce n’est pas exactement le cas.
Certes, les conteneurs et les machines virtuelles présentent des avantages d’isolation et d’allocation des ressources similaires mais sont différents dans leur approche de virtualisation
La virtualisation permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et les exécuter sous forme de machines virtuelles (VM) sur un serveur ou un terminal. Ces Machines Virtuelles intègrent elles-mêmes un OS sur lequel des applications sont exécutées. Ce n’est pas le cas du conteneur logiciel (pas d’OS).
Le conteneur fait en effet directement appel à l’OS de sa machine hôte pour réaliser ses appels système et exécuter ses applications, d’où son extrême légèreté.
Les avantages de Docker
Avec des applications PHP contenant beaucoup et de plus en plus de dépendances (MongoDB, Elastic Search, Algolia,…) ainsi que beaucoup de librairies, de nombreuses problématiques et difficultés côté serveur voient le jour.Docker facilite ce travail ce qui, aujourd’hui, explique son succès.Docker est même aujourd’hui le leader et champions de la conteneurisation.
A) Rapidité
Avant tout, Docker permet de faciliter et d’accélérer les déploiements puisque les conteneurs sont beaucoup plus facilement transportables entre serveurs Linux.
Docker permet de transporter une application de façon fluide entre les différents environnements c’est-à-dire depuis l’environnement de développement jusqu’à l’environnement de production et inversement, quasiment en un seul clic !
B) Légèreté
Comme le conteneur n’embarque pas d’OS comparativement à la machine virtuelle, il est ainsi beaucoup plus léger que cette dernière. Effectivement Docker n’a pas besoin d’activer un second système pour exécuter ses applications ainsi plus concrètement cela se traduit par un lancement plus rapide, mais aussi par la capacité à migrer plus facilement un conteneur d’une machine physique à une autre (du fait d’un poids très faible).
C) Compatibilité
Grâce à Dockerfile présent à sa racine, Docker répond à la problématique de compatibilité des applications sur plusieurs OS ou Cloud facilitant ainsi le travail.
Seule condition, les Cloud en présence doivent être optimisés pour les accueillir, et c’est le cas des principaux : Amazon Web Services, Microsoft Azure, Google Cloud Platform, OVH…
WEBQAM et la mise en place Docker
Nous avons déjà mis en place la solution Docker pour 5 projets :
- 3 projets pour Orange, dont le site “On reste ensemble” sous Laravel.
- le nouveau site à venir Enedis sous Drupal présentant le gestionnaire d’électricité français.
- le site du Gobelet Français sous Laravel : entreprise 100% made in France vendant des éco cup personnalisables.
L’instauration de Docker a été stratégique sur ces projets, puisqu’il nous a permis de faciliter et accélérer nos déploiements sur l’univers de production et réduire le nombre de risque de régressions entre univers de préprod et production. De plus, une couche de sécurité a été apportée avec ce cloisonnement fort. Aucun risque qu’un site victime d’un hack puisse en impacter en autre avec la conteneurisation imposée par Docker.
Et si ???
On parlait de votre projet
Notre équipe d'experts sera ravie d'étudier avec vous les enjeux et le périmètre de votre projet. Contactez-nous dès maintenant pour en discuter, ce sera peut-être l’occasion de venir nous rencontrer au WebqamPlex (et de faire un tour de toboggan) !