UbuntuにGPU Docker環境を構築する無料スクリプト|H100でCUDA計算まで検証
DockerとNVIDIA Container Toolkitを新規導入し、GPUなし・1枚・全GPUの一時コンテナでCUDA計算を確認する無料スクリプト。H100×2での実測結果と、既存環境で停止する条件を解説します。
GPUサーバーにDockerを入れても、そのままではコンテナ内でGPUを使えるとは限りません。ホストのドライバー、NVIDIA Container Toolkit、Dockerのランタイム設定を揃え、実際に計算できるか確認する必要があります。
ServerGearでは、この導入と確認をまとめた無料スクリプト 「GPU Docker Starter 0.1.0」 を公開しました。Ubuntu 26.04.1・H100 PCIe×2の実機で新規導入し、GPUなし・1枚指定・全GPU指定の3ケースを検証しています。
正常に動作するGPUドライバーを事前に用意してください。既存Docker・containerd・runcなどがある環境への上書きや移行は行いません。導入には設定・サービスの変更を伴います。
動画で使い方と実機結果を見る
約3分で、対象環境、実行するコマンド、H100での検証結果、既存環境で停止する条件を紹介します。
動画は実機検証記録を図解とコマンド例で説明したものです。連続した操作録画ではありません。ナレーションにAI音声(OpenAI Marin)を使用しています。
何を自動化するスクリプトか
処理を3段階に分けました。最初からインストールが始まることはありません。
| コマンド | 内容 | ホストへの影響 |
|---|---|---|
inspect |
OS・GPU・空き容量・既存環境・導入可否を確認 | 情報の読み取り |
apply --yes |
Docker EngineとNVIDIA Container Toolkitを導入・設定 | APTリポジトリ追加、パッケージ導入、Docker有効化・再起動など |
verify --yes |
一時コンテナでGPUの認識数と小さなCUDA計算を確認 | イメージ取得、一時コンテナとGPU計算の実行 |
GPUドライバー、CUDA Toolkit、PyTorch、Slurmはインストールしません。第一弾のGPU健康診断ツールは読み取り中心の点検ですが、今回は環境を構築するツールです。
対象環境と、検証した範囲
対象OSはUbuntu 24.04 / 26.04のx86_64、対象GPUは同型のA100 80GB PCIeまたはH100 PCIeで、MIG無効の構成です。Python 3.10以上、systemd、sudo、公式APTリポジトリとDocker HubへのHTTPS接続が必要です。/var/libの利用可能容量は20GiB以上を条件としています。
今回の実機検証は次の範囲です。「対象条件に含まれる」ことと「その実機で導入まで試した」ことは区別しています。
| 実機 | 確認内容 | 結果 |
|---|---|---|
| H100 PCIe×2 / Ubuntu 26.04.1 | Docker新規導入・GPUコンテナ計算 | 3ケースすべてPASS |
| 同じH100機 | 管理済み設定でapplyを再実行 | Dockerを再起動せず、試験コンテナも継続 |
| 同じH100機 | GPU計算プロセスがある状態でverify | 使用中として停止 |
| A100 80GB PCIe×4 / Ubuntu 24.04.4 | 既存runcパッケージを検出 | 変更前に導入を拒否。Docker導入・コンテナ計算は未実施 |
| GPUなしBox PC | inspect | GPUがないため停止 |
Ubuntu 24.04での新規導入、OS再起動後の確認、H200・B200・RTX、MIG、GPU混在、複数ノード構成は今回検証していません。詳しい条件は検証条件ページとZIP内のdocs/validation.mdをご覧ください。
手順1:ダウンロードして、内容を確認する
無料ダウンロードページでメールアドレスを登録し、お知らせ配信への同意後、届いた確認メールのリンクから取得します。取得権限には期限と回数制限があります。
ZIPをUbuntu上で展開し、展開先へ移動します。ファイル名は0.1.0の場合です。
unzip servergear-gpu-docker-0.1.0.zip
cd servergear-gpu-docker-0.1.0
sha256sum -c SHA256SUMS
同梱のREADMEを読み、sg-gpu-docker.pyとcuda-probe.pyを同じフォルダーに置いて使います。外部のPythonパッケージは不要です。ZIP全体のSHA256はダウンロードページでも確認できます。
手順2:inspectで導入条件を確認する
sudo python3 sg-gpu-docker.py inspect
出力はJSONです。OS・GPUの構成に加え、blockers、warnings、fresh_installを確認します。fresh_installには新規導入が可能か、その理由が含まれます。inspectが正常終了しても、GPUコンテナでの計算成功を意味するわけではありません。
sudoなしでも情報を取得できますが、Dockerや本ツールの管理記録の確認には権限が必要です。スクリプトはGPU使用状況と、slurmd稼働時のSlurmジョブも確認します。GPU計算中、待機・実行ジョブがある、使用状況を確認できない場合は導入・検証を開始しません。
この確認は完全な排他制御ではありません。別の管理者やスケジューラーから新しいジョブ・コンテナが投入されない時間帯で作業してください。
手順3:applyで新規導入する
条件を確認したうえで、新規または復元可能な環境で実行します。
sudo python3 sg-gpu-docker.py apply --yes
Docker公式・NVIDIA公式のAPTリポジトリを追加し、署名鍵の指紋を確認してパッケージを導入します。実行時の候補バージョンを取得し、その実行中は版を固定します。Dockerの設定を検査してから、サービスを有効化・再起動します。
導入前の状態、APT計画、実際のパッケージ版、設定ハッシュは/var/lib/servergear-gpu-docker/へroot専用で記録します。今回のH100ではDocker 29.9.2、NVIDIA Container Toolkit 1.20.1を導入しました。将来、リポジトリの候補版が変われば導入版も変わります。
既存Dockerだけでなく、関連パッケージ・設定・データがある場合も停止します。A100機で停止した理由は既存のruncでした。これを削除して導入を強行する案内はしていません。

導入途中の失敗をすべて自動で巻き戻す機能はありません。incompleteが記録された場合は自動再開せずに停止します。管理記録や既存設定を削除して回避せず、止まった段階を確認して相談してください。
手順4:verifyでGPU計算まで確認する
sudo python3 sg-gpu-docker.py verify --yes --output docker-check
sudo cat docker-check/report.txt
Docker Official Imageのpython:3.12-slim-bookwormを取得し、取得したイメージの固定ダイジェストを記録・使用します。コンテナ側のユーザー空間はDebianです。ホストのUbuntuとは独立しています。
H100×2の実測結果は次のとおりです。
| 試験 | アクセス可能なGPU | CUDA計算 | 判定 |
|---|---|---|---|
| GPU指定なし | 0枚 | 実行対象なし | PASS |
| ホストGPU 0を1枚指定 | 1枚 | 42 + 1 = 43 | PASS |
| 全GPUを指定 | 2枚 | それぞれ42 + 1 = 43 | PASS |

試験コンテナはネットワークなし、ルートファイルシステム読み取り専用で、ホストのディレクトリーやDockerソケットをマウントせず、ポートも公開しません。終了時には本ツールが作った一時コンテナだけを削除します。取得したイメージと導入パッケージは残ります。
出力先にはreport.txt、report.json、相談用のsupport.txtを保存します。既存フォルダーは上書きしないため、再検証時は別名にするか--outputを省略してください。省略すると日時入りのフォルダーを使います。
PASSは、この小さな計算とGPUの使い分けが成功したという意味です。性能、長時間安定性、NCCL・NVLink等のGPU間通信、PyTorchなどのアプリケーション動作は別途検証が必要です。
Slurmと組み合わせるときの注意
DockerのGPU利用は、Slurmの割り当てを自動では尊重しません。 Slurm Starterと両方を導入するだけで、共有HPCの権限管理やジョブ隔離が完成するわけではありません。
本ツールはユーザーをdockerグループへ追加せず、sudoでの操作を前提にしています。複数の研究者が使う環境では、誰がコンテナを起動するか、GPU割り当てをどう管理するか、Apptainer等を使うかも含めて設計します。既存Docker、rootless Docker、Podman、Kubernetesへの組み込みは初版の対象外です。
困ったときと、構築のご相談
無料スクリプトの相談窓口ではAIによる一次対応を行っています。製品名・版、どの段階で止まったか、期待した動作を添えて、確認済みのsupport.txtの必要部分をメール本文に貼ってください。相談内容をスクリプトが自動送信することはありません。
構成・日時・ログにも機密情報が含まれる場合があります。秘密鍵、パスワード、個人情報、社内URLは送らず、必要部分だけに絞ってください。既存環境の変更・停止・削除、故障判断、見積りや購入は担当者へ引き継ぎます。
「いまあるGPUサーバーでコンテナを使いたい」「研究室でGPUを共有したい」「用途に合うGPUと構成から相談したい」という場合は、ServerGearの構築・購入相談もご利用ください。
GPU Docker Starterを取得 無料スクリプト一覧