Docker-Container erreichen die Isolierung durch den Namespace der Linux-Kernel-Technologie. Der Mechanismus „Linux Namespaces“ bietet eine Ressourcenisolationslösung. Die Ressourcen unter jedem Namespace sind transparent und für die Ressourcen unter anderen Namespaces unsichtbar , wird es mehrere Prozesse mit derselben PID geben.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.
Docker verwendet hauptsächlich den Namespace der Linux-Kernel-Technologie, um eine Isolationslösung für Ressourcen zu erreichen.
PID, IPC, Netzwerk und andere Systemressourcen sind nicht mehr global, sondern gehören zu einem bestimmten Namespace. Die Ressourcen unter jedem Namespace sind transparent und für die Ressourcen unter anderen Namespaces unsichtbar. Daher gibt es auf Betriebssystemebene mehrere Prozesse mit derselben PID. Es können zwei Prozesse mit den Prozessnummern 0, 1 und 2 gleichzeitig im System vorhanden sein. Da sie zu unterschiedlichen Namensräumen gehören, besteht kein Konflikt zwischen ihnen. Auf Benutzerebene sind nur Ressourcen sichtbar, die zum eigenen Namespace des Benutzers gehören. Mit dem Befehl ps können beispielsweise nur Prozesse unter dem eigenen Namespace des Benutzers aufgelistet werden. Auf diese Weise sieht jeder Namespace wie ein separates Linux-System aus.
Das Beispiel lautet wie folgt: Prozessisolation
Starten Sie einen Container
docker run -it -p 8080:8080 --name pai-sn pai-sn:snapshot /bin/bash
-it interaktiver Start, -p Portzuordnung, –name Auf den Containernamen folgt der Bildname, öffnen Sie die Shell , und geben Sie den Container nach dem Start ein
Prozess anzeigen
ps -ef
Verwenden Sie den oberen Befehl, um Prozessressourcen anzuzeigen
Zeigen Sie den Prozess des aktuell ausgeführten Containers auf dem Host-Computer an ps -ef|grep pai-sn
Daraus können wir erkennen, dass der Docker-Ausführungsbefehl nur einen Prozess startet und seine PID 4677 ist. Das Containerprogramm selbst ist isoliert und nur seine eigenen internen Prozesse sind im Container sichtbar. Docker wird mit Hilfe der Namespace-Technologie des Linux-Kernels implementiert.
Dateiisolierung
Führen Sie den Befehl ls im Stammverzeichnis im Container aus.
Der Container enthält bereits diese Ordner.
Der Host führt Docker-Informationen aus Unser Docker. Was
Die Docker-Version ist 20.10.6 und der Speichertreiber ist Overlay2. Verschiedene Speichertreiber verhalten sich in Docker unterschiedlich, aber die Prinzipien sind ähnlich.
Das Docker-Dateisystem wird über „mount“ gemountet. Führen Sie den Befehl „docker ps“ aus
Wir haben festgestellt, dass dies mit dem Verzeichnis unseres Containers übereinstimmt. Wir erstellen ein neues Verzeichnis unter diesem Verzeichnis und prüfen dann, ob im Container ein neues Verzeichnis angezeigt wird. Tatsächlich erfolgt die Datei- und Ressourcenisolierung über das Mounten im neuen Namespace.Empfohlenes Lernen: „
Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonDurch welche Isolierung werden Docker-Container isoliert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!