UbuntuのDockerでNVIDIA Container Toolkitを設定する方法

Docker

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が無いため)。

目次

  1. NVIDIA Container Toolkitとは
  2. 前提環境と必要なもの
  3. DockerをUbuntuにインストールする
  4. NVIDIAリポジトリを追加してToolkitをインストールする
  5. DockerランタイムにNVIDIAを設定する(nvidia-ctk)
  6. GPUコンテナの動作確認
  7. NVIDIA CUDA公式Dockerイメージの使い方
  8. Ubuntu 22.04 と 24.04 のバージョン差
  9. よくあるエラーと解決策
  10. まとめ

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 です。




ubuntu@linuxlab: ~
$ ls -1 /usr/bin/nvidia-*
/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)で確認しています。




ubuntu@linuxlab: ~
$ cat /etc/os-release | grep PRETTY_NAME
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 を使う方法が一番手軽です。




ubuntu@server: ~
$ sudo apt-get update
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)。




ubuntu@linuxlab: ~
$ sudo apt-get install -y curl gnupg ca-certificates
$ 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
NVIDIAリポジトリ追加〜apt-cache policy の実測ターミナル(Playwright実撮影)
NVIDIAリポジトリ追加〜apt-cache policy の実測ターミナル(Playwright実撮影)

手順2:NVIDIA公式GPGキーを取得する

NVIDIAのリポジトリを安全に使うために、まず署名用のGPGキーをダウンロードして /usr/share/keyrings/ に置きます。




ubuntu@linuxlab: ~
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
    | 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に追加する




ubuntu@linuxlab: ~
$ curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | 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 でした。




ubuntu@linuxlab: ~
$ apt-cache policy nvidia-container-toolkit
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 インストールの実ログ(実測)
nvidia-container-toolkit インストールの実ログ(実測)
導入される4パッケージのバージョンとサイズ実測表(実測)
導入される4パッケージのバージョンとサイズ実測表(実測)

最も大きいのは 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 の中身をそのまま取得しました。




ubuntu@linuxlab: ~
$ nvidia-ctk –version
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 runtime configure と生成された daemon.json(実測)
nvidia-ctk runtime configure と生成された daemon.json(実測)

nvidia-ctk はDockerd向けに /etc/docker/daemon.json を自動更新します。実際に生成された内容がこちらです。手動でも同じ内容を書けますが、コマンド一発で済むので便利です。




ubuntu@linuxlab: ~(daemon.json の中身を確認)
$ cat /etc/docker/daemon.json
{
  “runtimes”: {
    “nvidia”: {
      “args”: [],
      “path”: “nvidia-container-runtime”
    }
  }
}

--runtime オプションは docker(デフォルト)のほか containerdcrio も指定できます(nvidia-ctk runtime configure --help で実測確認)。Kubernetesを使う場合は containerd を選びます。

apt install→nvidia-ctk version→daemon.json生成までの実測ターミナル(Playwright実撮影)
apt install→nvidia-ctk version→daemon.json生成までの実測ターミナル(Playwright実撮影)

ここまでの「インストール → nvidia-ctk runtime configuredaemon.json 確認」までの流れを実際の端末でつなげると、上のスクリーンショットのようになります。

手順6:Dockerデーモンを再起動する




ubuntu@server: ~
$ sudo systemctl restart 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バージョン・使用率はお使いの環境で変わります。




ubuntu@gpu-server: ~(出力例)
# GPU搭載環境で実行(–gpus all でGPUをコンテナに渡す)
$ 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で提供しています。イメージタイプが複数あり、用途によって使い分けます。

NVIDIA CUDA Dockerイメージ タイプ別一覧(概念図)
NVIDIA CUDA Dockerイメージ タイプ別一覧(概念図)

迷ったら runtime イメージを選ぶとよいです。base はCUDAランタイムのみで最小サイズ、develnvcc(CUDAコンパイラ)も含むため開発向けです。CUDA 12系のランタイム版は次のようにpullします。




ubuntu@server: ~
# CUDA 12.6.3 / Ubuntu 24.04 / ランタイム版を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」エラー




ubuntu@server: ~(エラーと対処)
Error response from daemon: could not select device driver “” with capabilities: [[gpu]]
# 原因: 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」エラー




ubuntu@server: ~
W: GPG error: https://nvidia.github.io … 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ドライバはホスト側に必要です。




ubuntu@server: ~
# ホストのドライバ確認
$ 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を使えるようにする手順を、実出力とともに解説しました。

  • curlgnupgca-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インスタンス比較はこちらの記事もご参考にどうぞ。

コメント

タイトルとURLをコピーしました