ホームページ 運用・保守 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Dockerインタビューの質問:DevOpsエンジニアリングインタビューをエース Dockerインタビューの質問:DevOpsエンジニアリングインタビューをエース Apr 06, 2025 am 12:01 AM

Dockerは、DevOpsエンジニアにとって必須のスキルです。 1.Dockerは、アプリケーションとその依存関係をコンテナにパッケージ化することにより、分離と移植性を実現するオープンソースのコンテナ化されたプラットフォームです。 2. Dockerは、名前空間、コントロールグループ、フェデレーションファイルシステムで動作します。 3。基本的な使用には、コンテナの作成、実行、管理が含まれます。 4.高度な使用法には、DockerComposeを使用してマルチコンテナーアプリケーションを管理することが含まれます。 5.一般的なエラーには、コンテナ障害、ポートマッピングの問題、データの持続性の問題が含まれます。デバッグスキルには、ログの表示、コンテナの入り、および詳細情報の表示が含まれます。 6.パフォーマンスの最適化とベストプラクティスには、画像の最適化、リソースの制約、ネットワーク最適化、DockerFileを使用するためのベストプラクティスが含まれます。

Dockerボリューム:コンテナ内の永続的なデータの管理 Dockerボリューム:コンテナ内の永続的なデータの管理 Apr 04, 2025 am 12:19 AM

Dockervolumeは、コンテナを再起動、削除、または移行すると、データが安全であることが保証されます。 1。ボリュームの作成:Dockervolumecreatemydata。 2。コンテナとマウントボリュームを実行します:Dockerrun-It-Vmydata:/app/dataubuntubash。 3.高度な使用には、データ共有とバックアップが含まれます。

Dockerの画像を更新する方法 Dockerの画像を更新する方法 Apr 15, 2025 pm 12:03 PM

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerによってコンテナを出る方法 Dockerによってコンテナを出る方法 Apr 15, 2025 pm 12:15 PM

Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop< container_name>コマンドを使用するDocker Kill< container_name>ホストターミナルのコマンド(フォース出口)

Dockerのファイルを外部にコピーする方法 Dockerのファイルを外部にコピーする方法 Apr 15, 2025 pm 12:12 PM

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]< Container Path> <ホストパス>。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

Dockerセキュリティ硬化:容量から容器を保護します Dockerセキュリティ硬化:容量から容器を保護します Apr 05, 2025 am 12:08 AM

Dockerセキュリティの強化方法は次のとおりです。1。-cap-dropパラメーターを使用してLinux機能を制限します。2。読み取り専用コンテナを作成します。これらの戦略は、脆弱性の露出を減らし、攻撃者の機能を制限することにより、コンテナを保護します。

Dockerを再起動する方法 Dockerを再起動する方法 Apr 15, 2025 pm 12:06 PM

Dockerコンテナを再起動する方法:コンテナID(Docker PS)を取得します。コンテナを停止します(docker stop< container_id>);コンテナを起動します(docker start< container_id>);再起動が成功していることを確認します(Docker PS)。その他の方法:Docker Compose(Docker-Compose Restart)またはDocker API(Dockerドキュメントを参照)。

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

See all articles