ホームページ 運用・保守 Docker Nvidia docker2とは何ですか

Nvidia docker2とは何ですか

Dec 08, 2021 pm 05:27 PM

nvidia-docker2.0 は、主に docker の設定ファイル「/etc/docker/daemon.json」を変更することで、docker が NVIDIA Container ランタイムを使用できるようにするシンプルなパッケージです。

Nvidia docker2とは何ですか

この記事の動作環境: Windows 10 システム、Docker バージョン 20.10.11、Dell G3 コンピューター。

NVidia Docker の紹介

NVIDIA は、NVIDIA GPU を使用したコンテナーを容易にするために、2016 年に NVIDIA-Docker の設計を開始しました。第 1 世代の nvidia-docker1.0 は、Docker クライアントのカプセル化を実装し、コンテナーの起動時に必要な GPU デバイスとライブラリをコンテナーにマウントします。ただし、この設計方法は Docker ランタイムと高度に連携しているため、柔軟性に欠けます。既存の欠陥は次のとおりです。

この設計は Docker と高度に結合しており、他のコンテナー ランタイムをサポートしていません。例: LXC、CRI-O、将来追加される可能性のあるコンテナ ランタイム。

Docker エコシステム内の他のツールを有効に活用できません。例: docker compose。

GPU は、柔軟なスケジューリングのためのスケジューリング システムのリソースとして使用できません。

コンテナ実行時の GPU サポートを改善します。例: ユーザーレベルの NVIDIA ドライバー ライブラリ、NVIDIA カーネル モジュール、デバイスの順序などを自動的に取得します。

上記の欠点に基づいて、NVIDIA は次世代コンテナ ランタイム nvidia-docker2.0 の設計を開始しました。

nvidia-docker 2.0 の実装メカニズム

まず、nvidia-docker 2.0、containerd、nvidia-container-runtime、libnvidia-container との直接の関係を簡単に紹介します。ランク。

これらの関係は、次の図で関連付けることができます:

Nvidia docker2とは何ですか

nvidia-docker 2.0

nvidia -docker2.0 は、主に docker 構成ファイル /etc/docker/daemon.json を変更することで docker が NVIDIA コンテナー ランタイムを使用できるようにするシンプルなパッケージです。

nvidia-container-runtime

nvidia-container-runtime は実際のコア部分で、元の Docker コンテナー ランタイム runc に基づいて事前起動を追加します。フック、使用されます。 libnvidia-container ライブラリを呼び出します。

libnvidia-container

libnvidia-container は、Linux コンテナーで使用される NVIDIA GPU を作成するために使用できるライブラリとシンプルな CLI ツールを提供します。

Containerd

Containerd は主に次のことを担当します:

  • コンテナのライフ サイクルの管理 (コンテナの作成から破棄まで) )

  • #コンテナ イメージのプル/プッシュ

  • ストレージ管理 (イメージとコンテナ データのストレージの管理)

  • ##runc を呼び出してコンテナを実行します
  • コンテナのネットワーク インターフェイスとネットワークを管理します

Nvidia docker2とは何ですかcontainerd の場合 リクエストを受信したら、関連する準備を行います。runc を自分で呼び出すか、containerd-shim を作成して runc を呼び出すかを選択できます。Runc は、OCI ファイルに基づいてコンテナを作成します。以上が通常のコンテナ作成の基本的な流れです。

RunC

RunC は軽量ツールです。コンテナを実行するために使用されます。これは 1 つのことと 1 つのことを実行するためにのみ使用されます。適切に実行してください。これは、Docker エンジンを経由せずにコンテナを直接実行できるコマンド ライン ガジェットと考えることができます。実際、runC は標準化の産物であり、OCI 標準に従ってコンテナを作成および実行します。 OCI (Open Container Initiative) 組織は、コンテナ形式とランタイムに関するオープンな業界標準を開発することを目的としています。

RunC コマンド ラインを使用してコンテナを直接作成し、簡単な対話機能を提供できます。

各コンポーネントの機能とコンポーネント間の関係を紹介しました。次に、この図を詳しく説明します:

Nvidia docker2とは何ですか通常どおりコンテナを作成します。

docker --> dockerd --> containerd--> containerd-shim -->runc --> container-process
ログイン後にコピー

docker クライアントは、コンテナ作成リクエストを dockerd に送信します。 dockerd がリクエストタスクを受信すると、そのリクエストを containerd に送信します。 チェックと検証の後、containerd は、containerd-shim を起動します。コンテナプロセスを開始します。

GPU を使用するコンテナーの作成

GPU コンテナーを作成するプロセスは次のとおりです。

docker--> dockerd --> containerd --> containerd-shim--> nvidia-container-runtime --> nvidia-container-runtime-hook --> libnvidia-container --> runc -- > container-process
ログイン後にコピー

基本的なプロセスは次のプロセスと似ています。 GPU を使用しないコンテナー。ただし、docker のデフォルトのランタイムは、NVIDIA 独自の nvidia-container-runtime に置き換えられます。

このように、nvidia-container-runtime はコンテナを作成するときに、まず nvidia-container-runtime-hook フックを実行して、コンテナが GPU を使用する必要があるかどうかを確認します (環境変数 NVIDIA_VISIBLE_DEVICES によって判断されます)。 。必要に応じて、libnvidia-container を呼び出して GPU をコンテナーに公開します。それ以外の場合は、デフォルトの runc ロジックが使用されます。

そういえば、nvidia-docker2.0 の一般的な仕組みは基本的に明らかです。ただし、nvidia-container-runtime、libnvidia-container、containerd、および runc に関連するプロジェクトについては、この記事では 1 つずつ紹介しません。興味があれば、自分で調べて学ぶことができます。これらのプロジェクトのアドレスは記事内でリンクされています。

推奨学習: 「Docker ビデオ チュートリアル

以上がNvidia docker2とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Docker execを使用してDockerコンテナでコマンドを実行する方法 Docker execを使用してDockerコンテナでコマンドを実行する方法 Mar 05, 2025 pm 03:42 PM

Docker execを使用してDockerコンテナでコマンドを実行する方法

Dockerとは何ですか? Dockerとは何ですか? Mar 05, 2025 pm 03:49 PM

Dockerとは何ですか?

Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか? Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか? Mar 17, 2025 pm 04:20 PM

Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか?

Dockerは環境またはソフトウェアです Dockerは環境またはソフトウェアです Mar 05, 2025 pm 03:38 PM

Dockerは環境またはソフトウェアです

Dockerとは何ですか? Dockerとは何ですか? Mar 05, 2025 pm 03:46 PM

Dockerとは何ですか?

Dockerとは何ですか? Dockerとは何ですか? Mar 05, 2025 pm 03:39 PM

Dockerとは何ですか?

Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか? Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか? Mar 17, 2025 pm 04:28 PM

Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか?

Kubernetesのポッド、展開、サービスとは何ですか? Kubernetesのポッド、展開、サービスとは何ですか? Mar 17, 2025 pm 04:25 PM

Kubernetesのポッド、展開、サービスとは何ですか?

See all articles