Docker et l'hôte partagent le noyau ; le conteneur Docker est essentiellement un processus sur l'hôte. Docker implémente l'isolation des ressources via l'espace de noms. Le noyau partagé entre le docker et l'hôte implémente essentiellement l'isolation des processus via l'espace de noms et le groupe de contrôle du noyau.
L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.
Docker et l'hôte partagent le noyau
L'essence est l'isolation des processus obtenue via l'espace de noms et le groupe de contrôle du noyau
Quand on parle de Docker, nous parlons souvent de l'implémentation de Docker . De nombreux développeurs savent que les conteneurs Docker sont essentiellement des processus sur la machine hôte. Docker implémente l'isolation des ressources via l'espace de noms. Les restrictions de ressources sont implémentées via des groupes de contrôle et des opérations de fichiers efficaces sont implémentées via le mécanisme de copie sur écriture. Mais en approfondissant les détails techniques tels que les espaces de noms et les groupes de contrôle, la plupart des développeurs se sentiront perdus. Donc ici, je vais d'abord vous présenter le noyau Linux et comprendre les détails techniques de l'espace de noms et des groupes de contrôle.
Isolement des ressources de l'espace de noms
Si vous souhaitez implémenter un conteneur d'isolation des ressources, par où devriez-vous commencer ? La première réaction de certaines personnes peut être la commande chroot. Le sentiment le plus intuitif donné aux utilisateurs par cette commande est que le point de montage du répertoire racine / est changé après utilisation, c'est-à-dire que le système de fichiers est isolé. Ensuite, pour communiquer et se localiser dans un environnement distribué, le conteneur doit disposer d'une adresse IP, d'un port, d'un routage, etc. indépendants, l'isolation du réseau vient donc naturellement à l'esprit. Dans le même temps, le conteneur a également besoin d'un nom d'hôte indépendant pour s'identifier sur le réseau. Quand je pense au réseau, je pense naturellement à la communication, et je pense aussi à la nécessité d'isoler la communication inter-processus. Les développeurs ont peut-être également réfléchi à la question des autorisations. L'isolement des utilisateurs et des groupes d'utilisateurs réalise l'isolement des autorisations des utilisateurs. Enfin, l'application exécutée dans le conteneur doit avoir son propre (PID) et doit naturellement être isolée du PID de l'hôte.
Ainsi, les six isolations requises pour un conteneur sont pratiquement terminées. Le noyau Linux fournit ces six appels système d'isolation d'espace de noms, comme indiqué dans le tableau 1-1.
En fait, l'un des principaux objectifs de l'espace de noms implémentant le noyau Linux est d'implémenter des services de virtualisation (conteneur) légers. Les processus dans le même espace de noms peuvent détecter les changements les uns des autres et ne savent rien des processus externes. Cela peut donner au processus dans le conteneur l'illusion qu'il se trouve dans un environnement système indépendant, obtenant ainsi indépendance et isolement.
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!