Was ist NVIDIA Docker2?
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.
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:
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.
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
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.
Erstellen Sie einen Container, der die GPU verwendet.
docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process
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!

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



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

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

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.

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

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

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.

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.

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.
