qu'est-ce que nvidia docker2
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".
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 :
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
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 :
Le processus normal de création d'un conteneur est le suivant :
docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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)

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.

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.

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.

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.

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.

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.
