あきらぼ

テック系ブログ

docker-composeで「unknown or invalid runtime name: nvidia」のエラー

あるdocker-composeのGPUを使用するイメージでハマってしまったので、解決した方法を書こうと思います。

 

環境

  • Windows11
  • Cuda V12.2.128
  • WSL2(Ubuntu20.04)
  • Docker 20.10.17
  • Docker Compose V1.25

 

問題

WSL2(Ubuntu20.04)上で以下のようなruntimeでnvidiaを指定するImageをBuildしようとしました。

 

 

このサービスのイメージはこちらです。

https://hub.docker.com/r/nvidia/cuda

 

このサービスを実行しようとすると以下のエラーが生じました。

ERROR: Cannot create container for service test: unknown or invalid runtime name: nvidia

 

解決策

私が解決したのは以下の二つを行ってです。

  1. docker-composeのバージョンアップ
  2. docker-compose.yamlでのGPU使用設定方法の変更

 

docker-composeのバージョンアップ

まずはdocker-composeのバージョンアップです。

V1.25からV2.20へアップデートしました。

 

バージョンアップ方法はこちらを参考にしました。

【Docker】docker-compose を最新版にアップグレードする - Qiita

公式のレポジトリはこちら。(こちらから最新のリリースバイナリに入れ替えればバージョンアップできます。)

GitHub - docker/compose: Define and run multi-container applications with Docker

 

docker-compose.yamlでのGPU使用設定方法の変更

次にdocker-compose.yamlの設定を変えます。

以下のように変更しました。(これで1つGPU使えます。複数GPUのケースは色々他に指定する必要があります。)

 

 

実際に実行するとコンテナ内でGPU状態が確認できます。

こちらに公式情報があります。

Compose で GPU アクセスの有効化 — Docker-docs-ja 20.10 ドキュメント

 

この方法でなくてもdockerのdefault runtime設定を変える方法もありますが、これもdocker-composeバージョンアップする必要はあります。

ただし公式でも非推奨方法となるので上記の方法が良いと思います。

 

以上、docker-composeでのGPU使用方法でのエラー解消法でした。