Maison Opération et maintenance Docker qu'est-ce que nvidia docker2

qu'est-ce que nvidia docker2

Dec 08, 2021 pm 05:27 PM

nvidia-docker2.0 est un package simple, qui permet principalement à Docker d'utiliser le runtime NVIDIA Container en modifiant le fichier de configuration de Docker "/etc/docker/daemon.json".

qu'est-ce que nvidia docker2

L'environnement d'exploitation de cet article : système Windows 10, Docker version 20.10.11, ordinateur Dell G3.

Présentation de NVidia Docker

NVIDIA a commencé à concevoir NVIDIA-Docker en 2016 pour faciliter les conteneurs utilisant les GPU NVIDIA. La première génération de nvidia-docker1.0 implémentait l'encapsulation du client Docker et montait les périphériques GPU et les bibliothèques nécessaires dans le conteneur lors du démarrage du conteneur. Cependant, cette méthode de conception est fortement couplée au runtime Docker et manque de flexibilité. Les défauts existants sont les suivants :

La conception est fortement couplée à Docker et ne prend pas en charge les autres environnements d'exécution de conteneurs. Tels que : les environnements d'exécution LXC, CRI-O et de conteneurs qui pourraient être ajoutés à l'avenir.

Vous ne pouvez pas mieux utiliser les autres outils de l'écosystème Docker. Tels que : docker composer.

Le GPU ne peut pas être utilisé comme ressource du système de planification pour une planification flexible.

Améliorez la prise en charge du GPU pendant l'exécution du conteneur. Par exemple : obtenez automatiquement les bibliothèques de pilotes NVIDIA au niveau utilisateur, les modules du noyau NVIDIA, l'ordre des périphériques, etc.

Sur la base des inconvénients décrits ci-dessus, NVIDIA a commencé la conception du runtime de conteneur de nouvelle génération : nvidia-docker2.0.

Le mécanisme d'implémentation de nvidia-docker 2.0

Tout d'abord, présentons brièvement la relation directe entre nvidia-docker 2.0, containersd, nvidia-container-runtime, libnvidia-container et runc.

La relation entre eux peut être liée à l'image suivante :

quest-ce que nvidia docker2

nvidia-docker 2.0

nvidia-docker2.0 est un package simple, qui modifie principalement le fichier de configuration du docker /etc /docker/daemon .json pour permettre à Docker d'utiliser le runtime NVIDIA Container.

nvidia-container-runtime

nvidia-container-runtime est la véritable partie centrale. Il ajoute un hook de pré-démarrage basé sur le runtime d'origine du conteneur Docker pour appeler la bibliothèque libnvidia-container.

libnvidia-container

libnvidia-container fournit une bibliothèque et un outil CLI simple qui peut être utilisé pour que les GPU NVIDIA soient utilisés par les conteneurs Linux.

Containerd

Containerd est principalement responsable de :

  • Gérer le cycle de vie des conteneurs (de la création à la destruction des conteneurs)

  • Pull/push des images des conteneurs

  • Gestion du stockage (gérer les images) et stockage des données du conteneur)

  • Appelez runc pour exécuter le conteneur

  • Gérer l'interface réseau et le réseau du conteneur

quest-ce que nvidia docker2

Une fois que conteneurd a reçu la demande, effectuez les préparatifs pertinents et vous pouvez choisir d'appeler lui-même, runc peut également créer containersd-shim, puis appeler runc, et runc crée le conteneur basé sur le fichier OCI. Ce qui précède est le processus de base de la création de conteneurs ordinaires.

RunC

RunC est un outil léger il est utilisé pour exécuter des conteneurs. Il n'est utilisé que pour faire une chose et bien la faire. Nous pouvons le considérer comme un gadget en ligne de commande capable d’exécuter des conteneurs directement sans passer par le moteur Docker. En fait, runC est un produit de standardisation et crée et exécute des conteneurs conformément aux normes OCI. L'organisation OCI (Open Container Initiative) a pour objectif de développer un standard industriel ouvert autour des formats et des runtimes de conteneurs.

Vous pouvez utiliser directement la ligne de commande RunC pour créer un conteneur et fournir des capacités d'interaction simples.

Les fonctions de chaque composant et la relation entre eux ont été présentées ci-dessus. Ensuite, l'image suivante sera décrite en détail :

quest-ce que nvidia docker2

Le processus normal de création d'un conteneur est le suivant :

docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process
Copier après la connexion

Le client Docker. va créer La demande de conteneur est envoyée à dockerd Lorsque dockerd reçoit la tâche de demande, il envoie la demande à conteneurd après vérification, conteneurd démarre conteneurd-shim ou démarre lui-même le processus de conteneur.

Créer un conteneur qui utilise GPU

Le processus de création d'un conteneur GPU est le suivant :

docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process
Copier après la connexion

Le processus de base est similaire à celui d'un conteneur qui n'utilise pas GPU, sauf que le runtime par défaut de docker est remplacé par le propre nvidia-container-runtime de NVIDIA.

De cette façon, lorsque nvidia-container-runtime crée un conteneur, il exécute d'abord le hook nvidia-container-runtime-hook pour vérifier si le conteneur doit utiliser le GPU (à en juger par la variable d'environnement NVIDIA_VISIBLE_DEVICES). Si nécessaire, appelez libnvidia-container pour exposer le GPU au conteneur. Sinon, la logique runc par défaut est utilisée.

À ce stade, le mécanisme général de nvidia-docker2.0 est fondamentalement clair. Cependant, les projets impliquant nvidia-container-runtime, libnvidia-container, containersd et runc ne seront pas présentés un par un dans cet article. Si vous êtes intéressé, vous pouvez explorer et apprendre par vous-même. Les adresses de ces projets ont été liées dans l'article.

Apprentissage recommandé : "Tutoriel vidéo Docker"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment déployer des applications à un cluster Swarm Docker? Comment déployer des applications à un cluster Swarm Docker? Mar 17, 2025 pm 04:20 PM

L'article détaille les applications de déploiement de Docker Swarm, couvrant la préparation, les étapes de déploiement et les mesures de sécurité pendant le processus.

Que sont les gods, les déploiements et les services de Kubernetes? Que sont les gods, les déploiements et les services de Kubernetes? Mar 17, 2025 pm 04:25 PM

L'article explique les pods, déploiements et services de Kubernetes, détaillant leurs rôles dans la gestion des applications conteneurisées. Il explique comment ces composants améliorent l'évolutivité, la stabilité et la communication dans les applications. (159 caractères)

Comment faire évoluer les applications à Kubernetes? Comment faire évoluer les applications à Kubernetes? Mar 17, 2025 pm 04:28 PM

L'article traite des applications de mise à l'échelle dans Kubernetes à l'aide de l'échelle manuelle, HPA, VPA et Autoscaler en cluster, et fournit les meilleures pratiques et outils pour surveiller et automatiser l'échelle.

Comment gérer les déploiements à Kubernetes? Comment gérer les déploiements à Kubernetes? Mar 17, 2025 pm 04:27 PM

L'article examine la gestion des déploiements de Kubernetes, en se concentrant sur la création, les mises à jour, la mise à l'échelle, la surveillance et l'automatisation à l'aide de divers outils et meilleures pratiques.

Comment gérer les services dans Docker Swarm? Comment gérer les services dans Docker Swarm? Mar 17, 2025 pm 04:22 PM

L'article discute de la gestion des services dans Docker Swarm, en se concentrant sur la création, la mise à l'échelle, la surveillance et la mise à jour sans temps d'arrêt.

Comment mettre en œuvre des mises à jour de roulement dans Docker Swarm? Comment mettre en œuvre des mises à jour de roulement dans Docker Swarm? Mar 17, 2025 pm 04:23 PM

L'article examine la mise en œuvre des mises à jour de roulement dans Docker Swarm pour mettre à jour les services sans temps d'arrêt. Il couvre les services de mise à jour, la définition des paramètres de mise à jour, la surveillance des progrès et la garantie de mises à jour en douceur.

Quelles sont les meilleures façons d'optimiser Docker pour les applications à faible latence? Quelles sont les meilleures façons d'optimiser Docker pour les applications à faible latence? Mar 14, 2025 pm 02:00 PM

L'article traite des stratégies pour optimiser Docker pour les applications à faible latence, en se concentrant sur la minimisation de la taille de l'image, en utilisant des images de base légères et en ajustant l'allocation des ressources et les paramètres du réseau.

Comment optimiser les images Docker pour la taille et les performances? Comment optimiser les images Docker pour la taille et les performances? Mar 14, 2025 pm 02:14 PM

L'article discute de l'optimisation des images Docker pour la taille et les performances à l'aide de versions multiples, d'images de base minimales et d'outils comme Docker Scout et Dive.

See all articles