UbuntuのDockerでGPUを使いたいけれど、セットアップ方法がわからない——そんな疑問に直接お答えします。
結論から言うと、NVIDIA Container Toolkit をインストールして nvidia-ctk runtime configure を実行するだけで、DockerコンテナからGPUが使えるようになります。
本記事では、2026年6月15日に ubuntu:24.04 の Docker公式イメージ内で実際にコマンドを動かし、nvidia-container-toolkit 1.19.1-1(実測時点の最新版)のインストールと設定手順を、実出力そのままで解説します。インストールログ・パッケージサイズ・nvidia-ctk が生成する daemon.json の中身まで、すべて実際に取得した一次データです。
この記事のポイント
- NVIDIA Container Toolkit は
apt-get install nvidia-container-toolkitで入る(2026-06-15実測: バージョン 1.19.1-1) - 1コマンドで
nvidia-container-toolkitほか計4パッケージ(DL合計 8,155 kB)が導入され、nvidia-ctkなど6本の実行ファイルが入る nvidia-ctk runtime configure --runtime=dockerを実行すると/etc/docker/daemon.jsonに nvidia ランタイムが自動追記される(生成内容を実測)- Ubuntu 22.04 LTS と 24.04 LTS の両方で同じ 1.19.1-1 が提供されている(実測で確認)
- 動作確認は
docker run --rm --gpus all nvidia/cuda:12.6.3-base-ubuntu24.04 nvidia-smiで行う
検証環境について
本記事のインストール・設定手順は、GPUを持たないホスト上の ubuntu:24.04 Docker公式イメージで実測しています(リポジトリ追加・apt install・nvidia-ctk の設定生成まではGPUなしでも実行・検証可能なため)。一方、--gpus all を付けた nvidia-smi の実行出力は、GPU搭載ホストでの典型的な出力例として掲載しています(検証環境にはGPUが無いため)。
目次
- NVIDIA Container Toolkitとは
- 前提環境と必要なもの
- DockerをUbuntuにインストールする
- NVIDIAリポジトリを追加してToolkitをインストールする
- DockerランタイムにNVIDIAを設定する(nvidia-ctk)
- GPUコンテナの動作確認
- NVIDIA CUDA公式Dockerイメージの使い方
- Ubuntu 22.04 と 24.04 のバージョン差
- よくあるエラーと解決策
- まとめ
NVIDIA Container Toolkitとは
NVIDIA Container Toolkit(旧称: nvidia-docker2)は、DockerコンテナからホストのNVIDIA GPUドライバにアクセスするためのランタイム拡張です。これがないと、たとえホストにGPUとドライバが入っていても、コンテナ内から nvidia-smi やCUDAライブラリを呼び出せません。
仕組みとしては、nvidia-container-runtime がDockerのデフォルトランタイム(runc)の前段に入り、コンテナ起動時に必要なドライバ・デバイスをマウントします。ユーザーはコンテナ実行時に --gpus all を付けるだけで、自動的にGPUが使えるようになります。
実際にインストールすると、/usr/bin に次の6本の実行ファイルが配置されました(2026-06-15実測)。中心になるのが設定用CLIの nvidia-ctk です。
/usr/bin/nvidia-cdi-hook
/usr/bin/nvidia-container-cli
/usr/bin/nvidia-container-runtime
/usr/bin/nvidia-container-runtime-hook
/usr/bin/nvidia-container-toolkit
/usr/bin/nvidia-ctk
注意
NVIDIA Container ToolkitはDockerコンテナからGPUを使うための中間層です。前提としてホスト(Ubuntu)にNVIDIAドライバが別途インストールされている必要があります。クラウドGPUインスタンス(Vultr GPU等)ではあらかじめドライバが入っている場合があります。
前提環境と必要なもの
本記事の手順は ubuntu:24.04 の Docker公式イメージ(x86_64 / amd64)で確認しています。
PRETTY_NAME=”Ubuntu 24.04.4 LTS”
$ uname -m
x86_64
$ dpkg –print-architecture
amd64
必要なものは次のとおりです。
- Ubuntu 22.04 LTS または 24.04 LTS(本記事は24.04で検証)
- NVIDIA GPU搭載サーバーまたはVPS(ホストにドライバ済みであること)
- Docker Engine(後述の手順でインストール)
sudo権限のあるユーザー
GPUサーバーを手頃に試したい場合、Vultrには時間課金のGPUインスタンスが用意されています。
DockerをUbuntuにインストールする
Dockerがまだ入っていない場合は先にインストールします。Ubuntu 24.04のaptリポジトリに収録されている docker.io を使う方法が一番手軽です。
Reading package lists… Done
$ sudo apt-get install -y docker.io
Setting up docker.io …
$ sudo systemctl enable –now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service
$ sudo usermod -aG docker $USER
# ログアウト/ログインで sudo なしで docker コマンドが使えるようになります
Docker Composeも使う場合は sudo apt-get install -y docker-compose-plugin を合わせて実行しておきます。Dockerそのもののインストールに不安がある方は も参照してください。
NVIDIAリポジトリを追加してToolkitをインストールする
NVIDIA Container Toolkitはubuntuのデフォルトリポジトリには含まれていないため、NVIDIA公式のGPGキーとリポジトリを追加してからインストールします。正直、ここが一番詰まりやすいポイントです。
手順1:前提パッケージをインストールする
GPGキーのダウンロードに curl、署名検証に gnupg が必要です。実測した3パッケージのバージョンは次のとおりでした(2026-06-15 / Ubuntu 24.04)。
$ dpkg-query -W -f=’${Package} ${Version}\n’ curl gnupg ca-certificates
ca-certificates 20240203
curl 8.5.0-2ubuntu10.9
gnupg 2.4.4-2ubuntu17.4

手順2:NVIDIA公式GPGキーを取得する
NVIDIAのリポジトリを安全に使うために、まず署名用のGPGキーをダウンロードして /usr/share/keyrings/ に置きます。
| sudo gpg –dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
$ ls -l /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
-rw-r–r– 1 root root 2299 Jun 15 02:09 nvidia-container-toolkit-keyring.gpg
実際に curl を実行したところ、-----BEGIN PGP PUBLIC KEY BLOCK----- から始まるGPGキーが取得でき(exitコード 0)、gpg --dearmor で 2,299バイトのバイナリ鍵が生成されました。
手順3:NVIDIAリポジトリをsources.list.dに追加する
| sed ‘s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g’ \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
実測したリストファイルには上記の stable 行に加えて、コメントアウトされた experimental 行も含まれていました。$(ARCH) はaptが解決する変数で、x86_64環境では amd64 に展開されます。
手順4:apt updateしてnvidia-container-toolkitをインストールする
リポジトリを追加して apt-get update すると、候補バージョンが見えるようになります。2026-06-15時点の Candidate は 1.19.1-1 でした。
nvidia-container-toolkit:
Installed: (none)
Candidate: 1.19.1-1
Version table:
1.19.1-1 500
1.19.0-1 500
(以下省略:1.17系まで多数のバージョンが選択可能)
$ sudo apt-get install -y nvidia-container-toolkit
0 upgraded, 4 newly installed, 0 to remove and 5 not upgraded.
Need to get 8155 kB of archives.
Get:3 … nvidia-container-toolkit-base 1.19.1-1 [5609 kB]
Get:4 … nvidia-container-toolkit 1.19.1-1 [1334 kB]
Setting up nvidia-container-toolkit (1.19.1-1) …
1コマンドで導入されるのは次の4パッケージです。合計ダウンロードは 8,155 kB、インストール後の合計サイズ(Installed-Size)は約 33.6 MB でした。


最も大きいのは nvidia-container-toolkit-base(Installed-Size 26,013 KB)で、これがランタイム本体です。逆に libnvidia-container-tools は 67 KB と小さなCLI群です。Ubuntu 22.04と24.04のどちらでも同じ 1.19.1-1 が提供されていました(後述)。
DockerランタイムにNVIDIAを設定する(nvidia-ctk)
インストール後、Dockerがコンテナ起動時にNVIDIAランタイムを使うよう設定する必要があります。nvidia-ctk コマンドが自動的にやってくれます。
手順5:nvidia-ctk runtime configureを実行する
実際にコンテナ内で nvidia-ctk runtime configure --runtime=docker を実行し、生成された /etc/docker/daemon.json の中身をそのまま取得しました。
NVIDIA Container Toolkit CLI version 1.19.1
commit: 09ceee5dde66ba9ce25c7cc69b1ebd5e6e3266fa
$ sudo nvidia-ctk runtime configure –runtime=docker
level=info msg=”Config file does not exist; using empty config”
level=info msg=”Wrote updated config to /etc/docker/daemon.json”
level=info msg=”It is recommended that docker daemon be restarted.”

nvidia-ctk はDockerd向けに /etc/docker/daemon.json を自動更新します。実際に生成された内容がこちらです。手動でも同じ内容を書けますが、コマンド一発で済むので便利です。
{
“runtimes”: {
“nvidia”: {
“args”: [],
“path”: “nvidia-container-runtime”
}
}
}
--runtime オプションは docker(デフォルト)のほか containerd・crio も指定できます(nvidia-ctk runtime configure --help で実測確認)。Kubernetesを使う場合は containerd を選びます。

ここまでの「インストール → nvidia-ctk runtime configure → daemon.json 確認」までの流れを実際の端末でつなげると、上のスクリーンショットのようになります。
手順6:Dockerデーモンを再起動する
$ sudo systemctl status docker | grep -E ‘(Active|Loaded)’
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
Active: active (running) since …
再起動後、Active: active (running) が確認できれば設定完了です。ここだけは順番を間違えないようにしてください。configure → restart の順番が大切です。
GPUコンテナの動作確認
設定が正しくできているか、実際にDockerコンテナからGPUを呼び出してみます。GPU搭載ホストでは次のように nvidia-smi がコンテナ内から実行できます。
この出力について
下のブロックはGPU搭載ホストでの典型的な出力例です(本記事の検証環境にはGPUが無いため、ここはGPUインスタンスでの一般的な結果を示しています)。GPU名・ドライバ/CUDAバージョン・使用率はお使いの環境で変わります。
$ docker run –rm –gpus all nvidia/cuda:12.6.3-base-ubuntu24.04 nvidia-smi
+—————————————————————————–+
| NVIDIA-SMI 535.xx Driver Version: 535.xx CUDA Version: 12.x |
| GPU Name Persist-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| 0 NVIDIA RTX …. Off | 00000000:01:00.0 Off | N/A |
| … ..C P8 …W | …MiB / …..MiB | ..% Default |
+—————————————————————————–+
nvidia-smi の出力でGPU名・ドライババージョン・CUDA対応バージョンが表示されれば成功です。could not select device driver などのエラーが出た場合は後述のセクションを参照してください。
GPU指定のオプション
--gpus all:全GPUをコンテナに渡す(一般的な用途)--gpus '"device=0"':GPU 0番のみを渡す(複数GPU環境での割り当て)--gpus 2:2基のGPUを渡す
NVIDIA CUDA公式Dockerイメージの使い方
NVIDIAは nvidia/cuda という公式イメージをDocker Hubで提供しています。イメージタイプが複数あり、用途によって使い分けます。

迷ったら runtime イメージを選ぶとよいです。base はCUDAランタイムのみで最小サイズ、devel は nvcc(CUDAコンパイラ)も含むため開発向けです。CUDA 12系のランタイム版は次のようにpullします。
$ docker pull nvidia/cuda:12.6.3-runtime-ubuntu24.04
Status: Downloaded newer image for nvidia/cuda:12.6.3-runtime-ubuntu24.04
PyTorchなどの機械学習フレームワークは独自のCUDA入りイメージを持っている場合が多いため、フレームワークの公式イメージを使う場合はそちらが優先です。cuDNNまで含めて環境を作りたい場合は も参考にしてください。
Ubuntu 22.04 と 24.04 のバージョン差
「Ubuntu 22.04だと古いバージョンしか入らないのでは?」と心配する方もいますが、NVIDIA Container Toolkitに関しては22.04でも24.04でも同じ 1.19.1-1 が提供されていました。実際に両方のコンテナで確認した結果が次の表です。
| 項目 | Ubuntu 24.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| nvidia-container-toolkit Candidate | 1.19.1-1 | 1.19.1-1 |
| インストール後 nvidia-ctk バージョン | 1.19.1 | 1.19.1 |
| PRETTY_NAME(実測) | Ubuntu 24.04.4 LTS | Ubuntu 22.04.5 LTS |
| リポジトリ | どちらも nvidia.github.io/libnvidia-container/stable/deb/amd64(共通) | |
NVIDIA Container Toolkitのリポジトリはディストリ非依存(stable/deb/$(ARCH))のため、Ubuntuのバージョンに関係なく最新版が入るのがポイントです。cuDNN のように 22.04 でパッケージが見つからない、といった差はありませんでした。
よくあるエラーと解決策

①「could not select device driver」エラー
# 原因: nvidia-ctk runtime configure が実行されていない
$ sudo nvidia-ctk runtime configure –runtime=docker
$ sudo systemctl restart docker
(docker再起動後に再度試す)
最もよく見るエラーです。nvidia-ctk runtime configure を実行してDockerdを再起動することで解消します。
②「GPG error: NO_PUBKEY」エラー
# 対処: GPGキーを再取得
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg –dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
$ sudo apt-get update
GPGキーファイルが壊れているか未作成の場合に出ます。手順2を再実行します。
③「nvidia-container-cli: initialization error」
このエラーはホストにNVIDIAドライバがインストールされていない場合に出ます。NVIDIA Container Toolkitはあくまでブリッジ役で、実際のGPUドライバはホスト側に必要です。
$ nvidia-smi
nvidia-smi: command not found
# ドライバをインストール(推奨ドライバを自動選択)
$ sudo ubuntu-drivers autoinstall
$ sudo reboot
注意
ubuntu-drivers autoinstall は再起動が必要です。VPSの場合は再起動後にSSHで再接続してください。クラウドGPUインスタンスはドライバ済みの場合が多いです。
まとめ
本記事では、ubuntu:24.04 の Docker公式イメージで実際にコマンドを動かしながら、NVIDIA Container Toolkit をインストールしてDockerコンテナからGPUを使えるようにする手順を、実出力とともに解説しました。
curl・gnupg・ca-certificatesで前提を整える(実測: curl 8.5.0-2ubuntu10.9 / gnupg 2.4.4-2ubuntu17.4)- NVIDIA公式GPGキー(2,299バイト)を取得してリポジトリを追加する
apt-get install -y nvidia-container-toolkitで4パッケージ(DL 8,155 kB)を導入(実測: バージョン 1.19.1-1)nvidia-ctk runtime configure --runtime=dockerで daemon.json に nvidia ランタイムを自動追記systemctl restart dockerでDockerを再起動docker run --rm --gpus all nvidia/cuda:... nvidia-smiで動作確認- Ubuntu 22.04 / 24.04 ともに 1.19.1-1 が入る(実測で確認)
GPU搭載のVPSやクラウドサーバーでAI/ML推論環境を構築したい方には、Vultrの時間課金GPUインスタンスが手頃でおすすめです。
各VPSサービスのGPUインスタンス比較はこちらの記事もご参考にどうぞ。


コメント