Quelles sont les deux technologies de base de Docker ?
Deux technologies de base : 1. « Espaces de noms Linux », qui est une encapsulation et une isolation des ressources système globales, permettant aux processus dans différents espaces de noms d'avoir des ressources système globales indépendantes ; 2. « Groupes de contrôle », qui peuvent isoler la machine hôte physique ; ressources pour mettre en œuvre des quotas et des mesures de ressources.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, version docker-1.13.1, ordinateur Dell G3.
Docker est un projet cloud open source basé sur le langage Go.
Docker résout le problème de cohérence entre l'environnement de développement, l'environnement de test et l'environnement de production grâce à la technologie de virtualisation, permettant à l'application et à son environnement d'exécution d'atteindre l'objectif de « Créer, expédier et exécuter n'importe quelle application, n'importe où ». Technologie de virtualisation de conteneurs qui facilite l'intégration continue et facilite la publication et l'expansion globales.
Les deux technologies principales de Docker : les espaces de noms et les groupes de contrôleurs.
1. Isolation : espace de noms Linux (ns)
Les espaces de noms Linux sont une sorte d'encapsulation et d'isolation des ressources système globales, de sorte que les processus dans différents espaces de noms disposent de ressources système globales indépendantes, la modification des ressources système ne fera que affectent les processus dans l’espace de noms actuel et n’ont aucun impact sur les processus dans d’autres espaces de noms. Ces ressources incluent : les arborescences de processus, les interfaces réseau, les points de montage, la communication inter-processus et d'autres ressources. 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 système indépendant, atteignant ainsi l’objectif d’isolement.
Chaque instance d'utilisateur est isolée les unes des autres et ne s'affecte pas les unes les autres. La méthode donnée par la méthode générale de virtualisation matérielle est VM, tandis que la méthode donnée par LXC est le conteneur, et pour être plus précis, c'est l'espace de noms du noyau. Parmi eux, pid, net, ipc, mnt, uts, user et d'autres espaces de noms contiendront le processus, le réseau, le message, le système de fichiers, l'UTS ("UNIX Time-sharing System) du conteneur ") et l'espace utilisateur est isolé.
1), espace de noms pid
Les processus des différents utilisateurs sont isolés via l'espace de noms pid, et différents espaces de noms peuvent avoir le même pid. Le processus parent de tous les processus LXC dans Docker est le processus Docker, et chaque processus LXC a un espace de noms différent. Dans le même temps, puisque l'imbrication est autorisée, Docker dans Docker peut être facilement implémenté.
2), espace de noms net
Avec l'espace de noms pid, les pids de chaque espace de noms peuvent être isolés les uns des autres, mais le port réseau partage toujours le port hôte. L'isolation du réseau est obtenue via l'espace de noms réseau. Chaque espace de noms réseau possède des périphériques réseau, des adresses IP, des tables de routage IP et des répertoires /proc/net indépendants. De cette manière, le réseau de chaque conteneur peut être isolé. Par défaut, docker utilise veth pour connecter la carte réseau virtuelle du conteneur à un pont docker : docker0 sur l'hôte.
3) L'interaction de processus dans l'espace de noms ipc
le conteneur utilise toujours la méthode d'interaction inter-processus Linux commune (communication interprocessus - IPC), y compris les sémaphores communs, les files d'attente de messages et la mémoire partagée. Cependant, contrairement à une machine virtuelle, l'interaction inter-processus d'un conteneur est en réalité une interaction inter-processus avec le même espace de noms pid sur l'hôte. Les informations sur l'espace de noms doivent donc être ajoutées lors de la demande de ressources IPC - chaque ressource IPC a un nom unique. -ID de bit.
4), l'espace de noms mnt
est similaire au chroot, plaçant un processus dans un répertoire spécifique pour son exécution. L'espace de noms mnt permet aux processus dans différents espaces de noms de voir différentes structures de fichiers, de sorte que les répertoires de fichiers vus par les processus dans chaque espace de noms soient isolés. Contrairement au chroot, les informations dans /proc/mounts du conteneur dans chaque espace de noms ne contiennent que le point de montage de l'espace de noms.
5), espace de noms uts
L'espace de noms UTS ("UNIX Time-sharing System") permet à chaque conteneur d'avoir un nom d'hôte et un nom de domaine indépendants, de sorte qu'il puisse être considéré comme un nœud indépendant sur le réseau plutôt que comme un Hébergez un processus sur.
6), espace de noms d'utilisateur
Chaque conteneur peut avoir un identifiant d'utilisateur et de groupe différent, ce qui signifie que l'utilisateur à l'intérieur du conteneur peut être utilisé pour exécuter le programme à la place de l'utilisateur sur l'hôte.
2. Limitations des ressources : groupes de contrôle (cgroups)
L'espace de noms isole le système de fichiers, le réseau et les processus de la machine hôte pour le processus nouvellement créé, mais l'espace de noms ne peut pas le faire à notre place. isolement. Mais si vous exécutez plusieurs conteneurs sur la même machine qui ne savent rien les uns des autres ni de la machine hôte, ces conteneurs occupent conjointement les ressources physiques de la machine hôte.
Les groupes de contrôle (CGroups en abrégé) sont capables d'isoler les ressources physiques sur la machine hôte, telles que le processeur, la mémoire, les E/S disque et la bande passante réseau. Chaque CGroup est un groupe de processus restreints par les mêmes normes et paramètres. Il existe une relation hiérarchique entre les différents CGroups, ce qui signifie qu'ils peuvent hériter de certaines normes et paramètres pour restreindre l'utilisation des ressources de leur classe parent.
cgroups met en place des quotas et une mesure des ressources. L'utilisation de cgroups est très simple. Il fournit une interface de type fichier. Créez un nouveau dossier dans le répertoire /cgroup pour créer un nouveau fichier de tâches dans ce dossier et écrivez le pid dans le fichier pour réaliser le processus. . contrôle des ressources. les groupes peuvent limiter les ressources des neuf sous-systèmes de blkio, cpu, cpuacct, cpuset, devices, congélateur, mémoire, net_cls et ns. Voici une description détaillée de chaque sous-système :
blkio Les paramètres de ce sous-système limitent chaque bloc. contrôle d'entrée et de sortie de l'appareil. Par exemple : disque, CD, USB, etc.
cpu Ce sous-système utilise le planificateur pour fournir un accès CPU aux tâches du groupe de contrôle.
cpuacct génère des rapports sur les ressources CPU pour les tâches du groupe de contrôle.
cpuset S'il s'agit d'un processeur multicœur, ce sous-système allouera un processeur et une mémoire séparés pour les tâches du groupe de contrôle.
devices Autoriser ou refuser l'accès aux tâches du groupe de contrôle aux appareils.
freezer met en pause et reprend les tâches du groupe de contrôle.
memory définit la limite de mémoire de chaque groupe de contrôle et génère des rapports sur les ressources mémoire.
net_cls marque chaque paquet réseau pour plus de commodité.
ns sous-système d'espace de noms.
Il existe également une certaine relation entre les neuf sous-systèmes ci-dessus. Veuillez vous référer à la documentation officielle pour plus de détails.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quatre façons de quitter Docker Container: Utilisez Ctrl D dans le terminal de conteneur Entrez la commande d'exit dans le terminal de conteneur Utilisez Docker Stop & lt; contener_name & gt; Commande utilise docker kill & lt; contener_name & gt; commande dans le terminal hôte (sortie de force)

Méthodes de copie de fichiers en hôtes externes dans Docker: Utilisez la commande docker cp: exécuter docker cp [options] & lt; Container Path & gt; & lt; Host Path & gt;. Utilisation de volumes de données: créez un répertoire sur l'hôte et utilisez le paramètre -v pour monter le répertoire dans le conteneur lors de la création du conteneur pour obtenir la synchronisation de fichiers bidirectionnels.

Les étapes pour mettre à jour une image Docker sont les suivantes: Tirez la dernière étiquette d'image Nouvelle image Supprimer l'ancienne image pour une balise spécifique (facultative) Redémarrez le conteneur (si nécessaire)

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Comment redémarrer le conteneur Docker: Obtenez l'ID de conteneur (Docker PS); Arrêtez le conteneur (docker stop & lt; contener_id & gt;); Démarrer le conteneur (docker start & lt; contener_id & gt;); Vérifiez que le redémarrage réussit (Docker PS). Autres méthodes: Docker Compose (redémarrage Docker-Compose) ou API Docker (voir Docker Documentation).

Méthode de visualisation du processus docker: 1. Commande Docker CLI: Docker PS; 2. Commande CLI Systemd: Docker d'état SystemCTL; 3. Docker Compose CLI Commande: Docker-Compose PS; 4. Process Explorer (Windows); 5. / Répertoire proc (Linux).

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Le processus de démarrage de MySQL dans Docker se compose des étapes suivantes: Tirez l'image MySQL pour créer et démarrer le conteneur, définir le mot de passe de l'utilisateur racine et mapper la connexion de vérification du port Créez la base de données et l'utilisateur accorde toutes les autorisations sur la base de données
