Fermer

juin 30, 2022

Utiliser Docker pour simplifier DevOps

Utiliser Docker pour simplifier DevOps


Docker est un projet open source qui a changé notre façon de penser le déploiement d’applications sur des serveurs. En exploitant certaines fonctionnalités étonnantes d’isolation des ressources du noyau Linux, Docker permet d’isoler facilement les applications serveur dans des conteneurs, de contrôler l’allocation des ressources et de concevoir des pipelines de déploiement plus simples. De plus, Docker permet tout cela sans la surcharge supplémentaire des machines virtuelles à part entière.

Voyons comment fonctionne Docker.

Les applications exécutées sur des machines virtuelles, à l’exception de l’hyperviseur, nécessitent une instance complète du système d’exploitation et de toutes les bibliothèques de prise en charge. Les conteneurs, cependant, utilisent des systèmes d’exploitation partagés. Cela signifie qu’ils sont beaucoup plus efficaces que les hyperviseurs en termes de ressources système. Au lieu de virtualiser le matériel, les conteneurs reposent sur une seule instance Linux. Cela signifie que vous pouvez laisser derrière vous les déchets inutiles de 99,9 % de VM, vous laissant avec une petite capsule soignée contenant votre application. La différence essentielle est que les processus s’exécutant à l’intérieur des conteneurs sont comme les processus natifs sur l’hôte et n’introduisent aucun surcoût associé à l’exécution de l’hyperviseur. De plus, les applications peuvent réutiliser les bibliothèques et partager les données entre les conteneurs.

Par conséquent, avec un système de conteneurs parfaitement réglé, vous pouvez avoir jusqu’à quatre à six fois plus d’instances d’application serveur que possible sur le même matériel. Une autre raison pour laquelle les conteneurs sont populaires est qu’ils se prêtent à Intégration continue/Déploiement continu.

Maintenant, après un rapide coup d’œil sur le fonctionnement de Docker, comprenons Architecture Docker.

Image sans titre

Docker utilise un architecture client-serveur. Le docker client parle au Docker démon, qui effectue le gros du travail de création, d’exécution et de distribution de vos conteneurs Docker. Le client et le démon Docker boîte exécuter sur le même système, ou vous pouvez connecter un client Docker à un démon Docker distant. Le client et le démon Docker communiquent à l’aide d’une API REST sur des sockets UNIX ou une interface réseau. Un autre client Docker est Docker Compose, qui vous permet de travailler avec des applications composées d’un ensemble de conteneurs.

Docker suit l’architecture client-serveur, qui comprend les trois composants principaux : Docker Client, Hôte Dockeret Registre Docker.

Client de Docker

L’API Docker est utilisée par les commandes Docker. Les utilisateurs de Docker peuvent interagir avec Docker via un client. Lorsque des commandes Docker sont exécutées, le client les envoie au démon Docker, qui les exécute. Les clients Docker peuvent communiquer avec plusieurs démons.

Hôte Docker

L’hôte Docker fournit un environnement complet pour exécuter et exécuter des applications. Il comprend le démon Docker, les images, les conteneurs, les réseaux et le stockage. Comme mentionné précédemment, le démon est responsable de toutes les actions liées au conteneur et reçoit les commandes via la CLI ou l’API REST. Il peut également communiquer avec d’autres démons pour gérer ses services.

Registre Docker

Les registres Docker sont des services qui fournissent des emplacements à partir desquels vous pouvez stocker et télécharger des images. En d’autres termes, un registre Docker contient des référentiels Docker qui hébergent une ou plusieurs images Docker. Vous pouvez également utiliser des registres privés. Les registres publics comprennent deux composants, à savoir le Docker Hub et le Docker Cloud. Les commandes les plus courantes lorsque vous travaillez avec des registres incluent docker push, docker pull et docker run.

Installation de Docker

Docker fonctionne nativement sur Linux, donc selon la distribution cible, cela peut être aussi simple que sudo apt-get install docker.io. Comme le démon Docker utilise des fonctionnalités de noyau spécifiques à Linux, il n’est pas possible d’exécuter Docker de manière native sous Mac OS ou Windows. Au lieu de cela, vous devez installer une application appelée Boot2Docker. L’application se compose d’une machine virtuelle VirtualBox, de Docker lui-même et des utilitaires de gestion Boot2Docker. Vous pouvez suivre les instructions d’installation officielles pour macOS et Windows pour installer Docker sur ces plates-formes.

Comment Docker peut-il vous aider dans votre projet ?

Lorsque votre équipe de développement change, Introduire de nouveaux développeurs dans le projet prend toujours du temps. Avant de pouvoir commencer à coder, ils doivent configurer leur environnement de développement local pour le projet – par exemple, un serveur local, une base de données ou des bibliothèques tierces. Cela peut prendre de quelques heures à plusieurs jours, selon la complexité du projet et la qualité du manuel de configuration du projet. Docker automatise ce travail de configuration et d’installation afin que les nouveaux développeurs puissent être productifs dès le premier jour. Au lieu de tout faire manuellement, ils exécutent simplement une commande qui préparera l’environnement de développement pour eux. Cela permet de gagner beaucoup de temps, et plus votre équipe de développement est grande et votre rotation élevée, plus vous gagnerez en utilisant Docker.

Lorsque votre logiciel s’exécute dans différents environnements, vous pouvez remarquer un comportement d’application incohérent entre les machines sur lesquelles il s’exécute. Quelque chose sur l’ordinateur d’un développeur peut ne pas fonctionner sur le serveur. Et le nombre de problèmes augmente avec chaque nouvel environnement, comme un autre serveur (serveur de test ou serveur de production) ou l’ordinateur d’un autre développeur avec un système d’exploitation différent. Docker vous permet d’exécuter le logiciel dans des conteneurs séparés du monde extérieur, afin que votre application puisse fonctionner de manière cohérente dans tous les environnements.

Quand votre logiciel grandit et se compose de nombreux éléments, lorsque les développeurs ajoutent quotidiennement de nouvelles bibliothèques, services et autres dépendances au logiciel. Plus votre logiciel devient complexe, plus il est difficile de garder une trace de toutes les parties nécessaires à son fonctionnement. Sans Docker, toutes les modifications de configuration du projet doivent être communiquées aux autres développeurs et documentées. Sinon, leur version de code cessera de fonctionner et ils ne sauront pas pourquoi. Avec Docker, tous les composants requis du logiciel sont spécifiés dans les fichiers de configuration Docker (comme Dockerfile et docker-compose.yml).

Quand vous voulez que votre logiciel soit évolutif et gérer plus d’utilisateurs. Docker ne rendra pas automatiquement votre application évolutive, mais peut vous aider. Les conteneurs Docker peuvent être lancés en plusieurs copies qui peuvent s’exécuter en parallèle. Ainsi, plus vous avez d’utilisateurs, plus vous lancez de conteneurs (par exemple, dans le cloud). Avant de le faire, votre logiciel doit être préparé pour exécuter plusieurs instances simultanément. Mais si les bloqueurs d’évolutivité sont déjà supprimés, les conteneurs Docker seront utiles pour lancer une application évolutive.

Lorsque votre infrastructure d’hébergement change et vous ne voulez pas être enfermé. Les petits sites Web et applications ne nécessitent pas d’infrastructure d’hébergement complexe. Mais lorsqu’une entreprise grandit et évolue, les exigences en matière de serveur évoluent également. Dans un environnement commercial en constante évolution, l’infrastructure Web doit être suffisamment flexible pour s’adapter rapidement. Les deux garantissent que votre le site Web ne plantera pas et que les coûts de l’infrastructure correspondent aux besoins réels. Et parce que les conteneurs Docker sont unifiés et très bien adoptés, ils peuvent être lancés dans presque tous les environnements de serveur.






Source link