ある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
解決策
私が解決したのは以下の二つを行ってです。
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使用方法でのエラー解消法でした。