GPU クラウドサーバーに Docker をインストールした後、docker run --gpus all [image-name] コマンドを実行してイメージからコンテナを起動する際に、docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]] エラーが発生することがあります。このエラーは、NVIDIA Container Toolkit がインストールされていないために発生します。
症状
Docker がインストールされた GPU クラウドサーバーで、docker run --gpus all [image-name] コマンドを実行して Docker コンテナを起動すると、次のエラーメッセージが表示されます。
ecs-user@xxx:~$ sudo docker run --gpus all ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/base:alinux3.2104
Unable to find image 'ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/base:alinux3.2104' locally
a1xxx04: Pulling from ac2/base
49xxx e3: Pull complete
30xxx 7c: Pull complete
17xxx ee: Pull complete
75xxx 8a: Pull complete
9fxxx 55: Pull complete
edxxx 55: Pull complete
Digest: sha256:5065d5946b1e30xxx7xxx4fxxx8xxxdxxx74acxxx6d0180f97
Status: Downloaded newer image for ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/base:alinux3.2104
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
原因
NVIDIA Container Toolkit は、Docker が GPU リソースにアクセスできるようにします。このツールキットがないと、Docker は GPU デバイスを選択できず、エラーがトリガーされます。
ソリューション
-
次のコマンドを実行して、NVIDIA GPU ドライバーが GPU インスタンスにインストールされていることを確認します。
説明GPU インスタンスにはドライバーがプリインストールされていません。ドライバーがないと Docker は GPU デバイスにアクセスできないため、手動でドライバーをインストールする必要があります。
nvidia-smi出力に次の例のようにドライバーのバージョンが表示されれば、NVIDIA GPU ドライバーはインストールされています。表示されない場合は、「Tesla ドライバーのインストール」または「GRID ドライバーのインストール」をご参照のうえ、必須のドライバーをインストールしてください。
NVIDIA-SMI 550.127.08 Driver Version: 550.127.08 CUDA Version: 12.4 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 A10 On | 00000000:00:07.0 Off | 0 0% 27C P8 10W / 150W | 1MiB / 23028MiB | 0% Default | | | N/A | Processes: GPU GI CI PID Type Process name GPU Memory ID ID Usage No running processes found -
次のコマンドを実行して、Docker が GPU インスタンスにインストールされていることを確認します。
sudo docker -v出力に次の例のように Docker のバージョンが表示されれば、Docker はインストールされています。表示されない場合は、「Docker および Docker Compose のインストールと使用」をご参照のうえ、Docker をインストールしてください。
[ecs-xxx ~]$ sudo docker -v Docker version 26.1.3, build b72abbb -
次のコマンドを実行して、NVIDIA Container Toolkit をインストールします。
次のコマンドは、CentOS、Alibaba Cloud Linux、Ubuntu の例です。他のオペレーティングシステムでのインストールコマンドについては、「NVIDIA Container Toolkit のインストール」をご参照ください。
-
Alibaba Cloud Linux 3 および CentOS 8 の場合
# Configure the repository. curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \ sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo # Install the toolkit. sudo yum install -y nvidia-container-toolkit # Restart the Docker service. sudo systemctl restart docker -
Ubuntu の場合
# Configure the repository. curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L 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 sudo apt-get update # Install the toolkit. sudo apt-get install -y nvidia-container-toolkit # Restart the Docker service. sudo systemctl restart docker
-
-
インストールを確認するには、ご利用のオペレーティングシステムに対応するコマンドを実行します。
-
CentOS および Alibaba Cloud Linux の場合
sudo rpm -qa | grep nvidia-container-toolkit -
Ubuntu の場合
sudo dpkg -l | grep nvidia-container-toolkit
出力に次の例のように NVIDIA Container Toolkit のバージョンが表示されれば、ツールキットはインストールされています。
ecs-uxxxx@xxxxxxxxxxxxxxxxxxxxx:~$ sudo dpkg -l | grep nvidia-container-toolkit ii nvidia-container-toolkit 1.17.5-1 amd64 NVIDIA Container toolkit ii nvidia-container-toolkit-base 1.17.5-1 amd64 NVIDIA Container Toolkit Base -
-
docker run --gpus all [image-name]を再度実行して、問題が解決したことを確認します。