0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerコンテナ内でGPUが動かない場合の対処方法

Last updated at Posted at 2025-08-22

ホストでNvidiaドライバー、CUDA Toolkitを認識しているか確認

ホストマシン自体がGPUを正しく認識しているかを確認します。

# 1. NvidiaドライバーのバージョンとGPUの状態を確認
# Driver Versionと、接続されているGPUの情報が表示されればOK
nvidia-smi
# 2. CUDA Toolkitのバージョンを確認 (インストールされている場合)
# nvccコマンドはCUDA Toolkitに含まれています
nvcc -V

nvidia-smi が正常にGPU情報を表示できれば、ドライバーは基本的に正しく動作しています。
また、nvidia-smi で表示される "CUDA Version" は、そのドライバーが対応しているCUDAの最大バージョンを示しており、実際にインストールされているToolkitのバージョンとは異なる場合があります。
そのため、nvccコマンドで正確なドライバーのバージョンを確認することを推奨しています。


コンテナでNvidiaドライバー、CUDA Toolkitを認識しているか確認

Dockerコンテナ内からGPUにアクセスできるかを確認します。

# Nvidiaの公式CUDAイメージを使って、コンテナ内でnvidia-smiを実行
# ホストと同じようにGPU情報が表示されれば成功
# nvidia/cuda以降は適切なパスを指定してください。
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi

このコマンドが失敗する場合、DockerとNvidiaドライバーの連携部分(NVIDIA Container Toolkit)に問題がある可能性が高いです。


【例外的な対処法】no-cgroups = false に変更する

最新OS(Ubuntu 22.04以降)と古いDockerバージョンを組み合わせているなど、特定の条件下でコンテナからGPUが見えない問題が発生することがあります。
これは、Dockerがcgroup v2のデバイス管理を正しく処理できない場合に起こります。

その際の回避策として、NVIDIAのツールにcgroupの管理を直接行わせる設定が有効な場合があります。

⚠️ 注意点

この方法は、あくまで一時的な回避策です。最新のDocker環境では、no-cgroups = true(デフォルト)が推奨されており、この設定を false に変更すると逆に問題が発生する可能性があります。実行する前に、Dockerを最新バージョンにできないか検討してください。

手順

  1. 設定ファイルを開く

    sudo nano /etc/nvidia-container-runtime/config.toml
    
  2. 設定を変更する
    ファイルの中にある no-cgroups = true という行を見つけて、false に書き換えます。

    # 変更前
    no-cgroups = true
    
    # 変更後
    no-cgroups = false
    
  3. 保存して閉じる
    Ctrl+X を押し、次に Y を押してから Enter を押して保存します。

  4. Dockerを再起動する

    sudo systemctl restart docker
    

設定変更後、再度コンテナ内での nvidia-smi の実行を試してください。

参考:


その他の確認事項

上記で問題が解決しない場合に、ドライバーの再インストール前に試せることです。

1. Dockerデーモンの再起動

設定変更後や何らかの不整合が起きた際に有効です。

sudo systemctl restart docker

2. NVIDIA Container Toolkitの設定確認

DockerがGPUを利用するためのデフォルトランタイムとして nvidia が設定されているか確認します。

# /etc/docker/daemon.json ファイルの中身を確認
cat /etc/docker/daemon.json

以下のような設定が含まれているか確認してください。

{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"
}

もしファイルが存在しない、または設定が異なる場合は、NVIDIA Container Toolkitのインストール手順を再確認してください。

3. NVIDIA関連のカーネルモジュールがロードされているか確認

nvidia関連のモジュールが表示されればOKです。何も表示されない場合、ドライバーが正しくロードされていません。

lsmod | grep nvidia

4. システムの再起動

最終手段ですが、多くのドライバー関連の問題が解決することがあります。

sudo reboot
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?