Heim Betrieb und Instandhaltung Docker Was ist NVIDIA Docker2?

Was ist NVIDIA Docker2?

Dec 08, 2021 pm 05:27 PM

nvidia-docker2.0 ist ein einfaches Paket, das es Docker hauptsächlich ermöglicht, die NVIDIA-Container-Laufzeitumgebung zu verwenden, indem die Docker-Konfigurationsdatei „/etc/docker/daemon.json“ geändert wird.

Was ist NVIDIA Docker2?

Die Betriebsumgebung dieses Artikels: Windows 10-System, Docker-Version 20.10.11, Dell G3-Computer.

Einführung in NVidia Docker

NVIDIA begann 2016 mit der Entwicklung von NVIDIA-Docker, um Container mit NVIDIA-GPUs zu ermöglichen. Der nvidia-docker1.0 der ersten Generation implementiert die Kapselung des Docker-Clients und stellt beim Starten des Containers die erforderlichen GPU-Geräte und Bibliotheken in den Container bereit. Diese Entwurfsmethode ist jedoch stark mit der Docker-Laufzeit gekoppelt und weist einen Mangel an Flexibilität auf. Die bestehenden Mängel sind wie folgt:

Das Design ist stark mit Docker gekoppelt und unterstützt keine anderen Container-Laufzeiten. Zum Beispiel: LXC, CRI-O und Containerlaufzeiten, die möglicherweise in Zukunft hinzugefügt werden.

Man kann andere Tools im Docker-Ökosystem nicht besser nutzen. Zum Beispiel: Docker Compose.

GPU kann nicht als Ressource des Planungssystems für flexible Planung verwendet werden.

Verbessern Sie die GPU-Unterstützung während der Containerlaufzeit. Beispiel: Erhalten Sie automatisch NVIDIA-Treiberbibliotheken auf Benutzerebene, NVIDIA-Kernelmodule, Gerätereihenfolge usw.

Basierend auf den oben beschriebenen Nachteilen begann NVIDIA mit dem Design der Container-Laufzeit der nächsten Generation: nvidia-docker2.0.

Der Implementierungsmechanismus von Nvidia-Docker 2.0

Stellen Sie zunächst kurz die direkte Beziehung zwischen Nvidia-Docker 2.0, Containerd, Nvidia-Container-Runtime, Libnvidia-Container und Runc vor.

Die Beziehung zwischen ihnen kann durch das folgende Bild dargestellt werden:

Was ist NVIDIA Docker2?

nvidia-docker 2.0

nvidia-docker2.0 ist ein einfaches Paket, das hauptsächlich die Docker-Konfigurationsdatei /etc/docker/daemon ändert .json, damit Docker die NVIDIA Container-Laufzeitumgebung nutzen kann.

nvidia-container-runtime

nvidia-container-runtime ist der eigentliche Kernteil. Es fügt einen Prestart-Hook hinzu, der auf dem ursprünglichen Docker-Container-Runtime-Runc basiert, um die libnvidia-container-Bibliothek aufzurufen.

libnvidia-container

libnvidia-container bietet eine Bibliothek und ein einfaches CLI-Tool, mit dem NVIDIA-GPUs für Linux-Container erstellt werden können.

Containerd

Containerd ist hauptsächlich verantwortlich für:

  • Verwaltung des Lebenszyklus von Containern (von der Containererstellung bis zur Zerstörung)

  • Containerbilder ziehen/schieben

  • Speicherverwaltung (Bilder verwalten) und Speicherung von Containerdaten)

  • Rufen Sie runc auf, um den Container auszuführen.

  • Verwalten Sie die Netzwerkschnittstelle und das Netzwerk des Containers Wenn Sie es selbst tun, kann Runc auch Containerd-Shim erstellen und dann Runc aufrufen, und Runc erstellt den Container basierend auf der OCI-Datei. Das Obige ist der grundlegende Prozess der normalen Containererstellung.

RunC

Was ist NVIDIA Docker2?

RunC ist ein leichtes Tool. Es dient nur dazu, eine Sache zu erledigen, und zwar gut. Wir können es uns als ein Befehlszeilen-Gadget vorstellen, das Container direkt ausführen kann, ohne die Docker-Engine zu durchlaufen. Tatsächlich ist runC ein Produkt der Standardisierung und erstellt und führt Container gemäß OCI-Standards aus. Die Organisation OCI (Open Container Initiative) hat sich zum Ziel gesetzt, einen offenen Industriestandard rund um Containerformate und Laufzeiten zu entwickeln.

Sie können die RunC-Befehlszeile direkt verwenden, um einen Container zu erstellen und einfache Interaktionsfunktionen bereitzustellen.

Die Funktionen der einzelnen Komponenten und die Beziehung zwischen ihnen wurden oben vorgestellt. Als nächstes wird das folgende Bild im Detail beschrieben:

Der normale Prozess zum Erstellen eines Containers ist wie folgt:

docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process
Nach dem Login kopieren

Der Docker-Client wird erstellt Die Containeranforderung wird an Docker gesendet. Wenn Docker die Anforderungsaufgabe empfängt, sendet es die Anforderung an Containerd. Nach der Überprüfung und Überprüfung startet Containerd den Containerprozess selbst.

Was ist NVIDIA Docker2?Erstellen Sie einen Container, der die GPU verwendet.

Der Prozess zum Erstellen eines GPU-Containers ist wie folgt:

docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process
Nach dem Login kopieren
Der grundlegende Prozess ähnelt dem eines Containers, der keine GPU verwendet, mit der Ausnahme, dass die Standardlaufzeit von Docker dies ist ersetzt durch NVIDIAs eigene nvidia-container-runtime .

Auf diese Weise führt nvidia-container-runtime beim Erstellen eines Containers zunächst den Hook nvidia-container-runtime-hook aus, um zu prüfen, ob der Container die GPU verwenden muss (beurteilt anhand der Umgebungsvariablen NVIDIA_VISIBLE_DEVICES). Rufen Sie bei Bedarf libnvidia-container auf, um die GPU dem Container zugänglich zu machen. Andernfalls wird die Standard-Runc-Logik verwendet.

An diesem Punkt ist der allgemeine Mechanismus von nvidia-docker2.0 grundsätzlich klar. Die Projekte mit nvidia-container-runtime, libnvidia-container, containerd und runc werden in diesem Artikel jedoch nicht einzeln vorgestellt. Wenn Sie interessiert sind, können Sie es auf eigene Faust erkunden und lernen. Die Adressen dieser Projekte sind im Artikel verlinkt.

Empfohlenes Lernen: „Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist NVIDIA Docker2?. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Wie bereitete ich Anwendungen für einen Docker -Schwarm -Cluster bereit? Wie bereitete ich Anwendungen für einen Docker -Schwarm -Cluster bereit? Mar 17, 2025 pm 04:20 PM

In den Artikelsdetails werden Anwendungen zum Docker -Schwarm bereitgestellt und die Vorbereitung, Bereitstellungsschritte und Sicherheitsmaßnahmen während des Prozesses abdeckt.

Was sind Kubernetes Pods, Bereitstellungen und Dienste? Was sind Kubernetes Pods, Bereitstellungen und Dienste? Mar 17, 2025 pm 04:25 PM

Der Artikel erläutert Kubernetes 'Pods, Bereitstellungen und Dienste und beschreibt ihre Rollen bei der Verwaltung von Containeranwendungen. Es wird erläutert, wie diese Komponenten die Skalierbarkeit, Stabilität und Kommunikation in Anwendungen verbessern (159 Zeichen).

Wie skalieren ich Anwendungen in Kubernetes? Wie skalieren ich Anwendungen in Kubernetes? Mar 17, 2025 pm 04:28 PM

In dem Artikel werden Skalierungsanwendungen in Kubernetes mit manueller Skalierung, HPA, VPA und Cluster -Autoscaler erörtert und bietet Best Practices und Tools zur Überwachung und Automatisierung der Skalierung.

Wie implementieren Sie Ratenlimit- und Ressourcenquoten in Docker -Containern? Wie implementieren Sie Ratenlimit- und Ressourcenquoten in Docker -Containern? Mar 12, 2025 pm 06:07 PM

In diesem Artikel werden in Docker die Quoten und die Ressourcenquoten implementiert. Es deckt CPU-, Gedächtnis- und E/A -Grenzwerte mithilfe von CGroups ab und betont die Best Practices zur Verhinderung der Erschöpfung der Ressourcen. Einschränkung der Netzwerkrate, die externe Tools erfordern, wie

Wie verwalte ich Dienste in Docker Swarm? Wie verwalte ich Dienste in Docker Swarm? Mar 17, 2025 pm 04:22 PM

In Artikel werden die Verwaltungsdienste in Docker Swarm erörtert, wobei der Schwerpunkt auf Erstellung, Skalierung, Überwachung und Aktualisierung ohne Ausfallzeiten liegt.

Wie implementiere ich Rolling -Updates in Docker Swarm? Wie implementiere ich Rolling -Updates in Docker Swarm? Mar 17, 2025 pm 04:23 PM

In dem Artikel werden die Implementierung von Rolling -Updates in Docker Swarm zur Aktualisierung von Diensten ohne Ausfallzeiten erläutert. Es deckt Aktualisierungsdienste, die Festlegung von Aktualisierungsparametern, die Überwachung des Fortschritts und die Gewährleistung der reibungslosen Updates ab.

Wie verwalte ich Bereitstellungen in Kubernetes? Wie verwalte ich Bereitstellungen in Kubernetes? Mar 17, 2025 pm 04:27 PM

In dem Artikel wird das Management von Kubernetes -Bereitstellungen erläutert, wobei der Schwerpunkt auf Erstellung, Aktualisierungen, Skalierung, Überwachung und Automatisierung mithilfe verschiedener Tools und Best Practices liegt.

Was sind die besten Möglichkeiten, Docker für Anwendungen mit niedriger Latenz zu optimieren? Was sind die besten Möglichkeiten, Docker für Anwendungen mit niedriger Latenz zu optimieren? Mar 14, 2025 pm 02:00 PM

In dem Artikel werden Strategien zur Optimierung von Docker für Anwendungen mit niedriger Latenz erörtert, die sich auf die Minimierung der Bildgröße, die Verwendung von leichten Basisbildern und die Anpassung der Ressourcenzuweisung und der Netzwerkeinstellungen konzentrieren.

See all articles