Welche Ressourcen Docker isoliert
Durch Docker isolierte Ressourcen: 2. Netzwerk; 4. Benutzer und Benutzergruppen für Berechtigungen; 6. Hostname und Domänenname; , usw.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.
Das Wesen eines Docker-Containers
Das Wesen eines Docker-Containers ist ein Prozess auf dem Host.
Docker implementiert Ressourcenisolation durch Namespace, Ressourcenbegrenzung durch cgroups und effiziente Dateioperationen durch *Copy-on-Write*.
Linux-Namespace-Mechanismus
Der Namespace-Mechanismus bietet eine Lösung zur Ressourcenisolation.
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.
Einer der Hauptzwecke des Linux-Kernels, der den Namespace implementiert, besteht darin, leichtgewichtige Virtualisierungsdienste (Container) zu implementieren, die Änderungen untereinander wahrnehmen können und nichts über externe Prozesse wissen, um Unabhängigkeit und Isolation zu erreichen. Was kann durch den Namespace isoliert werden? isoliert werden
Die Kommunikation zwischen Prozessen muss ebenfalls isoliert werden
Für Berechtigungen müssen Benutzer und Benutzergruppen ebenfalls isoliert werden
Die PID innerhalb des Prozesses muss ebenfalls von der PID in isoliert werden der Host
Der Container muss auch einen eigenen Hostnamen haben
Mit der oben genannten Isolierung glauben wir, dass ein Container vom Host und anderen Containern isoliert werden kann.
Es kommt vor, dass der Linux-Namespace dies kann. - NamespaceIsolierter Inhalt
- Systemaufrufparameter
IPC | .Semaphore, Nachrichtenwarteschlange und gemeinsamer Speicher | |
---|---|---|
Netzwerk | Netzwerkgeräte, Netzwerkstacks, Ports usw. | CLONE_NEWNET |
PID | Prozessnummer | CLONE_NEWPID |
Mount | Mountpunkt (Dateisystem) | CLONE_NEWNS |
Benutzer | Benutzer und Benutzergruppen | CLONE_NEWUSER |
UTS-Namespace UTS-Namespace (UNIX Time-Sharing System) bietet die Isolierung von Host- und Domänennamen, sodass jeder Docker-Container einen unabhängigen Hostnamen und Domänennamen haben und als unabhängiger Knoten im Netzwerk betrachtet werden kann . und nicht ein Prozess auf dem Host-Computer. IPC-Namespace Zu den von Inter-Process Communication (IPC) entwickelten IPC-Ressourcen gehören gemeinsame Semaphoren, Nachrichtenwarteschlangen und gemeinsam genutzter Speicher. PID-Namespace Die Isolierung von PID-Namespaces ist sehr praktisch. Sie nummeriert die Prozess-PID neu, dh Prozesse unter zwei verschiedenen Namespaces können dieselbe PID haben und jeder PID-Namespace verfügt über ein eigenes Zählprogramm. Mount-Namespace Mount-Namespace bietet Unterstützung für die Isolierung von Dateisystemen durch die Isolierung von Dateisystem-Mount-Punkten. Netzwerk-Namespace Netzwerk-Namespace bietet hauptsächlich die Isolierung von Netzwerkressourcen, einschließlich Netzwerkausrüstung, IPv4, IPv6-Protokollstapel, IP-Routing-Tabelle, Firewall, /proc/net-Verzeichnis, /sys/class/net-Verzeichnis, Suite Empfangswörter usw. Benutzernamespace Benutzernamespace isoliert installationsbezogene Bezeichner und Attribute Namespace-Operationen Namespace-API enthält clone() setns() unshare() und Teile unter /proc-Datei int clone(int(*child_func)(void *),void *child_stack,int flags, void *arg); Nach dem Login kopieren clone() ist eine allgemeinere Implementierung des Linux-Systemaufrufs fork(), der über Flags steuern kann, wie viele Funktionen verwendet werden. Es gibt mehr als 20 Arten von CLONE_*-Flags, die alle Aspekte des Klonvorgangs steuern. child_func übergibt die Hauptfunktion des Programms, das vom untergeordneten Prozess ausgeführt wird. child_stack übergibt den vom untergeordneten Prozess verwendeten Stapelspeicher.
ls -l /proc/10/ns Nach dem Login kopieren Die Namespace-Nummer in eckigen Klammern Wenn die Namespace-Nummern, auf die zwei Prozesse verweisen, gleich sind, bedeutet dies, dass sie sich im selben Namespace befinden Das Mounten der Verzeichnisdatei /proc/[pid]/ns mit der Methode --bind kann auch als Link fungieren Ausführen des Befehls Der Befehl erfordert die Verwendung von setns(). touch ~/utsmount --bind /proc/10/ns/uts ~/uts Nach dem Login kopieren
durch unshare( ) Namespace-Isolierung für den ursprünglichen Prozess Unshare ist dem Klonen sehr ähnlich, es muss kein neuer Prozess gestartet werden und kann für den ursprünglichen Prozess verwendet werden. Docker verwendet nicht den Systemaufruf fork gehört nicht zur Namespace-API cgroups ist ein vom Linux-Kernel bereitgestellter Mechanismus, der eine Reihe von Systemaufgaben und deren Unteraufgaben je nach Bedarf in verschiedene hierarchische Gruppen integrieren (oder trennen) kann und so eine Systemressourcenverwaltung ermöglicht einheitlicher Rahmen. cgroups ist ein weiteres leistungsstarkes Kernel-Tool unter Linux. Mit cgroups können Sie nicht nur die nach Namespace isolierten Ressourcen begrenzen, sondern auch Gewichtungen für Ressourcen festlegen, die Nutzung berechnen, den Start und Stopp von Aufgaben (Prozessen oder Landkreisen) steuern usw. Um es ganz klar auszudrücken: Cgroups können die von Aufgabengruppen verwendeten physischen Ressourcen (einschließlich CPU, Speicher, E/A usw.) begrenzen und aufzeichnen. Dies ist der Eckpfeiler beim Aufbau einer Reihe von Virtualisierungsverwaltungstools wie Docker. Die Rolle von cgroups cgroups bietet eine einheitliche Schnittstelle für die Ressourcenverwaltung auf verschiedenen Benutzerebenen: Von der individuellen Ressourcensteuerung bis hin zur Virtualisierung auf Betriebssystemebene bietet cgroups vier Hauptfunktionen. |
Das obige ist der detaillierte Inhalt vonWelche Ressourcen Docker isoliert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Vier Möglichkeiten zum Beenden von Docker Container: Verwenden Sie Strg D im Befehl Container Terminal ENGEBOT IM Container Terminal verwenden Sie Docker Stop & lt; container_name & gt; Befehl verwenden Sie Docker Kill & lt; container_name & gt; Befehl im Host -Terminal (Force Exit)

Methoden zum Kopieren von Dateien in externen Hosts in Docker: Verwenden Sie den Befehl Docker CP: Docker CP [Optionen] & lt; Containerpfad & gt; & lt; Host -Pfad & gt;. Verwenden von Datenvolumina: Erstellen Sie ein Verzeichnis auf dem Host und verwenden Sie den Parameter -V, um das Verzeichnis in den Container zu montieren, um den Container zu erstellen, um eine bidirektionale Dateisynchronisation zu erreichen.

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

So starten Sie den Docker -Container neu: Holen Sie sich die Container -ID (Docker PS); Stop den Container (Docker Stop & lt; Container_id & gt;); Starten Sie den Container (Docker start & lt; container_id & gt;); Stellen Sie sicher, dass der Neustart erfolgreich ist (Docker PS). Andere Methoden: Docker Compose (Docker-Compose Neustart) oder Docker-API (siehe Docker-Dokumentation).

Docker Process Viewing -Methode: 1. Docker Cli -Befehl: Docker PS; 2. SYSTEMD CLI -Befehl: SystemCTL Status Docker; 3.. Docker Compose CLI Command: Docker-Compose PS; 4. Process Explorer (Windows); 5. /proc -Verzeichnis (Linux).

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).
