Heim Betrieb und Instandhaltung Docker Was sind die beiden Kerntechnologien von Docker?

Was sind die beiden Kerntechnologien von Docker?

May 11, 2022 pm 12:57 PM
docker

Zwei Kerntechnologien: 1. „Linux-Namespaces“, eine Kapselung und Isolierung globaler Systemressourcen, die es Prozessen in verschiedenen Namespaces ermöglichen, über unabhängige globale Systemressourcen zu verfügen. 2. „Kontrollgruppen“, die den Host-Computer physisch isolieren können Ressourcen, um Ressourcenquoten und -messungen umzusetzen.

Was sind die beiden Kerntechnologien von Docker?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.

Docker ist ein Cloud-Open-Source-Projekt, das auf der Go-Sprache basiert.

Docker löst das Problem der Konsistenz zwischen Entwicklungsumgebung, Testumgebung und Produktionsumgebung durch Virtualisierungstechnologie und ermöglicht es der App und ihrer Betriebsumgebung, den Zweck „Jede APP überall erstellen, versenden und ausführen“ zu erreichen. Container-Virtualisierungstechnologie, die eine kontinuierliche Integration sowie die Gesamtfreigabe und -erweiterung erleichtert.

Die beiden Kerntechnologien von Docker: Namespaces und Controller-Gruppen.

1. Isolation: Linux-Namespace (ns)

Linux-Namespaces sind eine Art Kapselung und Isolierung globaler Systemressourcen, sodass Prozesse in verschiedenen Namespaces über unabhängige globale Systemressourcen verfügen und nur die Systemressourcen geändert werden wirken sich auf Prozesse im aktuellen Namespace aus und haben keine Auswirkungen auf Prozesse in anderen Namespaces. Zu diesen Ressourcen gehören: Prozessbäume, Netzwerkschnittstellen, Bereitstellungspunkte, Kommunikation zwischen Prozessen und andere Ressourcen. Prozesse im selben Namensraum können die Änderungen des anderen wahrnehmen und wissen nichts über externe Prozesse. Dies kann dem Prozess im Container die Illusion geben, dass er sich in einem unabhängigen System befindet, wodurch der Zweck der Isolation erreicht wird.

Jede Benutzerinstanz ist voneinander isoliert und beeinflusst sich nicht gegenseitig. Die von der allgemeinen Hardware-Virtualisierungsmethode angegebene Methode ist VM, während die von LXC angegebene Methode ein Container ist und genauer gesagt ein Kernel-Namespace ist. Darunter enthalten pid, net, ipc, mnt, uts, user und andere Namespaces den Prozess, das Netzwerk, die Nachricht, das Dateisystem und UTS („UNIX Time-Sharing System“) des Containers ") und der Benutzerbereich ist isoliert.

1), PID-Namespace

Die Prozesse verschiedener Benutzer werden durch den PID-Namespace isoliert, und verschiedene Namespaces können dieselbe PID haben. Der übergeordnete Prozess aller LXC-Prozesse in Docker ist der Docker-Prozess, und jeder LXC-Prozess hat einen anderen Namespace. Da eine Verschachtelung zulässig ist, kann Docker gleichzeitig problemlos in Docker implementiert werden.

2), Netz-Namespace

Mit dem PID-Namespace können die PIDs in jedem Namespace voneinander isoliert werden, aber der Netzwerkport teilt sich weiterhin den Host-Port. Die Netzwerkisolation wird durch den Net-Namespace erreicht. Jeder Net-Namespace verfügt über unabhängige Netzwerkgeräte, IP-Adressen, IP-Routing-Tabellen und /proc/net-Verzeichnisse. Auf diese Weise kann das Netzwerk jedes Containers isoliert werden. Standardmäßig verwendet Docker Veth, um die virtuelle Netzwerkkarte im Container mit einer Docker-Brücke zu verbinden: docker0 auf dem Host.

3) Die Prozessinteraktion im IPC-Namespace

Container verwendet weiterhin die übliche Linux-Interprozess-Interaktionsmethode (Interprozesskommunikation – IPC), einschließlich gemeinsamer Semaphoren, Nachrichtenwarteschlangen und gemeinsam genutztem Speicher. Im Gegensatz zu einer VM handelt es sich bei der Interprozessinteraktion eines Containers jedoch tatsächlich um eine Interprozessinteraktion mit demselben PID-Namespace auf dem Host. Daher müssen bei der Beantragung von IPC-Ressourcen Namespaceinformationen hinzugefügt werden – jede IPC-Ressource verfügt über eine eindeutige 32 -Bit-ID.

4), mnt-Namespace

ähnelt chroot und platziert einen Prozess in einem bestimmten Verzeichnis zur Ausführung. Mit dem mnt-Namespace können Prozesse in verschiedenen Namespaces unterschiedliche Dateistrukturen sehen, sodass die Dateiverzeichnisse, die Prozesse in jedem Namespace sehen, isoliert sind. Anders als bei Chroot enthalten die Informationen in /proc/mounts des Containers in jedem Namespace nur den Mountpunkt des Namespace.

5), UTS-Namespace

Der UTS-Namespace („UNIX Time-Sharing System“) ermöglicht es jedem Container, einen unabhängigen Hostnamen und Domänennamen zu haben, sodass er als unabhängiger Knoten im Netzwerk und nicht als Knoten betrachtet werden kann Hosten Sie einen Prozess auf.

6), Benutzernamespace

Jeder Container kann unterschiedliche Benutzer- und Gruppen-IDs haben, was bedeutet, dass der Benutzer im Container anstelle des Benutzers auf dem Host zum Ausführen des Programms verwendet werden kann.

2. Ressourcenbeschränkungen: Kontrollgruppen (cgroups)

Der Namespace isoliert das Dateisystem, das Netzwerk und die Prozesse vom Host-Computer für den neu erstellten Prozess, aber der Namespace kann dies nicht für uns tun Isolierung. Wenn Sie jedoch mehrere Container auf demselben Computer ausführen, die nichts voneinander und vom Host-Computer wissen, belegen diese Container gemeinsam die physischen Ressourcen des Host-Computers.

Kontrollgruppen (kurz CGroups) sind in der Lage, physische Ressourcen auf dem Host-Computer zu isolieren, wie z. B. CPU, Speicher, Festplatten-E/A und Netzwerkbandbreite. Jede CGroup ist eine Gruppe von Prozessen, die durch dieselben Standards und Parameter eingeschränkt sind. Zwischen verschiedenen CGroups besteht eine hierarchische Beziehung, was bedeutet, dass sie einige Standards und Parameter zur Einschränkung der Ressourcennutzung von ihrer übergeordneten Klasse erben können.

cgroups implementiert Quoten und die Messung von Ressourcen. Die Verwendung von cgroups ist sehr einfach. Erstellen Sie einen neuen Ordner im Verzeichnis /cgroup, um eine neue Aufgabendatei in diesem Ordner zu erstellen und die PID in die Datei zu schreiben . Ressourcenkontrolle. Gruppen können die Ressourcen der neun Subsysteme blkio, cpu, cpuacct, cpuset, devices, freezer, memory, net_cls und ns begrenzen. Im Folgenden finden Sie eine detaillierte Beschreibung jedes Subsystems:

  • blkio Diese Subsystemeinstellungen begrenzen jeden Block Eingabe- und Ausgabesteuerung des Geräts. Zum Beispiel: Diskette, CD, USB usw.

  • cpu Dieses Subsystem verwendet den Scheduler, um CPU-Zugriff auf Kontrollgruppenaufgaben bereitzustellen.

  • cpuacct generiert CPU-Ressourcenberichte für Cgroup-Aufgaben.

  • cpuset Wenn es sich um eine Multi-Core-CPU handelt, weist dieses Subsystem separate CPU und Speicher für Cgroup-Aufgaben zu.

  • Geräte Erlauben oder verweigern Sie den Zugriff auf Geräte durch Gruppenaufgaben.

  • freezer pausiert und setzt die Gruppenaufgaben fort.

  • memory legt das Speicherlimit jeder Kontrollgruppe fest und generiert Speicherressourcenberichte.

  • net_cls markiert jedes Netzwerkpaket zur Vereinfachung der Gruppensteuerung.

  • ns-Namespace-Subsystem.

Es gibt auch eine gewisse Beziehung zwischen den oben genannten neun Subsystemen. Einzelheiten finden Sie in der offiziellen Dokumentation.

Empfohlenes Lernen: „Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas sind die beiden Kerntechnologien von Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So aktualisieren Sie das Bild von Docker So aktualisieren Sie das Bild von Docker Apr 15, 2025 pm 12:03 PM

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).

So verlassen Sie den Container mit Docker So verlassen Sie den Container mit Docker Apr 15, 2025 pm 12:15 PM

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)

So kopieren Sie Dateien in Docker nach außen So kopieren Sie Dateien in Docker nach außen Apr 15, 2025 pm 12:12 PM

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.

So starten Sie Docker neu So starten Sie Docker neu Apr 15, 2025 pm 12:06 PM

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).

So überprüfen Sie den Namen des Docker -Containers So überprüfen Sie den Namen des Docker -Containers Apr 15, 2025 pm 12:21 PM

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 verwenden Sie Docker Desktop So verwenden Sie Docker Desktop Apr 15, 2025 am 11:45 AM

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).

So sehen Sie den Docker -Prozess So sehen Sie den Docker -Prozess Apr 15, 2025 am 11:48 AM

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).

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

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

See all articles