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 / Ubuntu / GPU] ホストマシン上では nvidia-smi を認識するのに、 docker コンテナ上ではエラーが発生する時

0
Last updated at Posted at 2026-05-02

1. 概要

Ubuntu OS 上の GPU の存在は間違いなく、nvidia-smi が実行できるにもかかわらず、 Docker コンテナからは GPU が認識できない時ってありますよね。

そんな場合の対策記事になります。

2. 動作環境

私の実行環境は以下の通りでした。

items version など 確認コマンド
OS Ubuntu 22.04.3 LTS lsb_release -a
docker Docker version 29.4.1, build 055a478 docker --version
GPU NVIDIA Corporation Device 2331 (rev a1) lspci | grep -i nvidia
nvcc なし nvcc -v

3. 問題発生状況

3-1. Docker コンテナ上で発生したエラー

大幅に省略しているが、 GPU を Docker コンテナに認識させるための記述は以下のようにしていた。

# docker-compose.yml の一部
services:
  app:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

この状態で docker compose uprun を実行したときに、以下のようなエラーが発生する

$ docker compose run app bash
Container docker-bayes3d-run-9956c308fca9 Creating 
Container docker-bayes3d-run-9956c308fca9 Created 
Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]

さて、この原因を調べよう。

3-2. ホストマシン上での動作確認結果

以下の通り、ホストマシン上では nvidia-smi はうまく動作する。

$ nvidia-smi
Wed Apr 29 19:25:33 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.133.20             Driver Version: 570.133.20     CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA H100-20C                On  |   00000000:07:00.0 Off |                    0 |
| N/A   N/A    P0            N/A  /  N/A  |       0MiB /  20480MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

このような場合には NVIDIA Container Toolkit をインストールすれば解決することが多い。

4. 対処法

4-1. 手順

NVIDIA 公式ドキュメントの、以下の方法に従おう。

Docker は正しく install できていると思うので、その場合は、最初の Setting up Docker はスキップして問題ない(私はスキップした)。
その場合は、ドキュメントの Setting up NVIDIA Container Toolkit から開始できる。

記載通りに以下の手順を踏めば、問題が解消しているはずである。

  • Setup the package repository and the GPG key
  • Install the nvidia-container-toolkit package
  • Configure the Docker daemon
  • Restart the Docker daemon
  • 動作テスト

(具体的な手順は将来変わりうるので、コマンド詳細はリンク先のドキュメントに譲る)

4-2. 動作テスト

簡単な動作確認方法としては、 docker コンテナに run か exec で入って、その状態で nvidia-smi を実行すれば良い。
対処に成功していれば、 docker コンテナ内であっても nvidia-smi の結果が以下のような感じで返ってくる。

$ nvidia-smi
Wed Apr 29 11:08:40 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.133.20             Driver Version: 570.133.20     CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA H100-20C                On  |   00000000:07:00.0 Off |                    0 |
| N/A   N/A    P0            N/A  /  N/A  |       0MiB /  20480MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
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?