Maison >Opération et maintenance >Docker >Docker est-il un conteneur ?
Docker n'est pas un conteneur ; un conteneur est une unité standard pour empaqueter le code et tous les logiciels qui en dépendent, utilisé pour le développement, la livraison et le déploiement, afin que les applications puissent s'exécuter rapidement et de manière fiable d'un environnement à un autre, tandis que Docker est un conteneur. technologie Une implémentation est un moteur de conteneur d'application open source utilisé pour gérer les conteneurs.
L'environnement d'exploitation de ce tutoriel : système linux7.3, docker version 19.03, ordinateur Dell G3. "Docker n'est pas un conteneur" n'est qu'une implémentation de la technologie des conteneurs, utilisée pour gérer les conteneurs, tout comme VMware est une implémentation de machines virtuelles. En plus de Docker, il existe également des implémentations de la technologie des conteneurs telles que LXC/LXD et rkt, mais Docker est la plus célèbre.
L'explication officielle de Docker sur les conteneurs, en une phrase, un conteneur (Container) consiste à conditionner un logiciel en unités standardisées pour le développement, la livraison et le déploiement. Les conteneurs sont des unités standard pour empaqueter le code et tous les logiciels qui en dépendent, permettant aux applications de s'exécuter rapidement et de manière fiable d'un environnement à un autre. Une image de conteneur est un progiciel léger, exécutable et indépendant qui contient tout ce dont vous avez besoin pour exécuter le logiciel : code, environnement d'exécution, outils système, bibliothèques système et paramètres. Les logiciels conteneurisés sont disponibles pour les applications Linux et Windows et s'exécutent de manière cohérente dans n'importe quel environnement. Les conteneurs confèrent l'indépendance au logiciel, en l'isolant de son environnement et en garantissant son exécution uniforme dans des environnements disparates tels que les environnements de développement et de test. Les conteneurs sont également une technologie utilisée pour empaqueter le code d'application (compilé) et les dépendances nécessaires à l'exécution. Chaque exécution du conteneur peut être répétée et la standardisation via l'inclusion de dépendances signifie que vous obtiendrez le même comportement dans n'importe quel environnement dans lequel vous exécutez le conteneur. Les conteneurs séparent les applications de l'infrastructure hôte, ce qui facilite leur déploiement dans différents environnements de cloud et de systèmes d'exploitation. Les conteneurs sont immuables et le code d'un conteneur en cours d'exécution ne peut pas être modifié. Si une application conteneurisée doit être modifiée, un nouveau conteneur doit être créé contenant les modifications et le conteneur doit être recréé à partir de l'image mise à jour.
La technologie des conteneurs isole et contrôle essentiellement les ressources système, permettant au processus du conteneur de s'exécuter dans son propre espace de noms indépendant. Les conteneurs peuvent avoir leur propre système de fichiers, configuration réseau, espace de processus, etc. Le processus dans le conteneur s'exécute dans un environnement isolé, c'est comme fonctionner dans un système indépendant de l'hôte, ce qui rend également le conteneur très pratique pour s'exécuter n'importe où. .
Avantages des conteneursLes principaux avantages des conteneurs sont résumés comme suit :
Facile et efficace à utiliser : Par rapport aux images de machines virtuelles, les images de conteneurs sont plus faciles à utiliser et plus efficaces. Le conteneur est de petite taille et rapide à démarrer, et n'a pas besoin d'être lié à l'environnement d'infrastructure externe, résolvant parfaitement le problème de cohérence des environnements de développement aux environnements de production.
Surveillance et gestion : les conteneurs sont plus transparents que les machines virtuelles et facilitent la surveillance et la gestion. En particulier, le cycle de vie du processus du conteneur est géré par l'infrastructure plutôt que caché à l'intérieur du conteneur par le gestionnaire de processus. Enfin, chaque application est packagée dans un conteneur, et gérer le déploiement de conteneurs équivaut à gérer le déploiement d'applications.
Intégration et déploiement continus : les conteneurs éliminent les différences environnementales et garantissent la cohérence et la standardisation de l'environnement du cycle de vie des applications. Les développeurs utilisent des images pour créer des environnements de développement standard. Une fois le développement terminé, les images complètes de l'environnement et de l'application sont encapsulées. Le personnel d'exploitation et de maintenance des tests peut directement déployer les images pour les tests et la publication, simplifiant ainsi le processus continu d'intégration, de test et de publication.
Normalisation de l'environnement et contrôle de version : sur la base de la cohérence environnementale et de la standardisation fournies par le conteneur, l'image du conteneur peut être contrôlée en version, c'est-à-dire que l'ensemble de l'environnement d'exploitation peut être contrôlé en version, fournissant une construction d'image de conteneur fiable et fréquente, déploiement et restauration rapide et facile.
Utilisation et isolation efficaces des ressources : les conteneurs n'ont pas de surcharge supplémentaire des hyperviseurs et partagent le système d'exploitation avec la couche sous-jacente. Ils ont d'excellentes performances et une faible charge du système. Ils peuvent exécuter plus d'instances d'application dans les mêmes conditions et en tirer pleinement parti. des ressources du système. Les conteneurs disposent également de bonnes capacités d'isolation et de contrôle des ressources, et peuvent allouer avec précision les ressources système pour garantir que les applications ne s'affectent pas les unes les autres.
Observable : affiche des informations et des mesures non seulement du système d'exploitation, mais également de l'application elle-même.
Portabilité de la distribution Cloud et OS : fonctionne sur Ubuntu, RHEL, CoreOS, les machines physiques, GKE et partout ailleurs.
Centré sur les applications : du déploiement de systèmes d'exploitation sur du matériel traditionnel au déploiement d'applications dans le système d'exploitation.
Lâchement couplés, distribués, élastiques et microservices : les applications sont divisées en modules plus petits et plus indépendants qui peuvent être gérés et déployés de manière dynamique, plutôt qu'en grands programmes monolithiques exécutés sur des appareils dédiés.
Docker est sans aucun doute le leader parmi de nombreuses technologies de conteneurs. Quant à ce qu'est Docker, nous pouvons le résumer à travers les points suivants :
Docker est un projet de conteneur open source, le code est maintenu sur GitHub, suit le protocole Apache 2.0 et a a rejoint Linux La fondation, soutenue par les systèmes d'exploitation grand public et les fournisseurs de services cloud, a été créée pour promouvoir l'Open Container Alliance (OCI).
Docker est développé et implémenté à l'aide du langage Go de Google. Il est basé sur l'espace de noms (espace de noms), le groupe de contrôle (cgroup) du noyau Linux et Union FS tel qu'OverlayFS. Il encapsule et isole le processus, qui est la virtualisation au niveau du système d'exploitation. niveau technologie. Étant donné que le processus isolé est indépendant de l’hôte et des autres processus isolés, il est également appelé conteneur.
Docker a été initialement implémenté sur la base d'un conteneur Linux (LXC), puis a remplacé LXC par son propre libcontainer développé, puis a évolué pour utiliser runc et containersd.
Docker fournit une solution de conteneur efficace, agile et légère qui peut déployer rapidement et automatiquement des applications dans le conteneur. Il fournit une isolation des ressources et une garantie de sécurité pour le conteneur grâce à la technologie du noyau du système d'exploitation, simplifiant considérablement la création et la maintenance du conteneur, et prend en charge le déploiement vers environnements sur site et plusieurs plates-formes cloud. En d’autres termes, Docker fournit une solution unique pour le développement, l’exécution et le déploiement d’applications.
runc est un outil de ligne de commande Linux permettant de créer et d'exécuter des conteneurs conformément à la spécification OCI Container Runtime.
containerd est un démon qui gère le cycle de vie des conteneurs et fournit un ensemble minimal de fonctions pour exécuter des conteneurs et gérer des images sur un nœud.
Avantages de Docker
En tant que méthode de virtualisation émergente, Docker présente de nombreux avantages par rapport aux méthodes de virtualisation traditionnelles. Le résumé spécifique est le suivant :
Utilisation plus efficace des ressources système : les conteneurs ne nécessitent pas de surcharge supplémentaire telle que la virtualisation matérielle et l'exécution d'un système d'exploitation complet entraîne une utilisation plus élevée des ressources système, une demande moindre et peut atteindre des résultats plus élevés. performance. Un hôte avec la même configuration peut exécuter un plus grand nombre d'applications utilisant des conteneurs que des machines virtuelles.
Temps de démarrage plus rapide : les applications de conteneur Docker peuvent atteindre des temps de démarrage de quelques secondes, voire millisecondes. Cela permet de gagner considérablement du temps de développement, de test et de déploiement.
Environnement d'exécution cohérent : l'image Docker fournit un environnement d'exécution complet à l'exception du noyau, garantissant la cohérence de l'environnement d'exécution de l'application, de sorte qu'il n'y aura plus de problème selon lequel le même code ne peut pas s'exécuter dans un autre environnement.
Livraison et déploiement continus : grâce à Docker, vous pouvez réaliser une intégration, une livraison continue et un déploiement continus en personnalisant les images d'application. Les développeurs créent l'image via Dockerfile et effectuent des tests d'intégration avec le système d'intégration continue. Le personnel d'exploitation et de maintenance peut rapidement déployer l'image directement dans l'environnement de production, ou même utiliser le système de déploiement continu pour un déploiement automatique.
Migration plus facile : Docker garantit la cohérence de l'environnement d'exécution, ce qui facilite la migration des applications entre différentes plates-formes sans se soucier des changements dans l'environnement d'exécution entraînant un dysfonctionnement de l'application.
Maintenance et extension plus faciles : la technologie de stockage en couches et de mise en miroir utilisée par Docker facilite la réutilisation de parties répétées de l'application, et simplifie également la maintenance et la mise à jour de l'application. Expansion ultérieure du miroir basée sur la base. le miroir devient également très simple. Docker conserve également un grand nombre d'images officielles de haute qualité, réduisant ainsi davantage le coût de production d'images pour les services d'application.
Bonne isolation : Docker offre une isolation fiable des ressources et une garantie de sécurité pour les conteneurs, permettant aux conteneurs d'allouer avec précision les ressources système et de garantir que les applications ne s'affectent pas les unes les autres.
Mise à l'échelle élastique : bonne pour gérer des rafales concentrées de pression d'utilisation du serveur et pour gérer dynamiquement les applications.
Apprentissage recommandé : "Tutoriel vidéo Docker"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!