snapで入れたdocker + docker-compose + NVIDIA GPU の組み合わせで docker compose up ができない
NVIDIA GPUをdocker上で使おうとしたときにハマったので備忘録です.
docker compose up (-d) を実行したときのエラーは以下の通り:
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown
環境(前提条件)
- Ubuntu 20.04.6 LTS
- docker (snapで入れたもの)
- docker compose (以下コマンドで入れたもの)
- nvidia-docker2 (aptで入れたもの)
- nvidia-driver (aptで入れたもの)
sudo mkdir -p /usr/local/libexec/docker/cli-plugins cd /usr/local/libexec/docker/cli-plugins sudo curl -L https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o docker-compose sudo chmod +x docker-compose
起きたこと
docker compose build は問題なく完了.
docker compose up (-d) を実行したときのエラーは以下の通り:
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown
解決策
以下の2つの記事が解決の決定打となった.
要は snap で入れた docker を使ってはいけないらしい.
やること
- snap で入れた docker を消す.
snap remove docker
- docker の公式ドキュメントに従い apt 経由で docker-ce をインストールする
以下ページ参照.
- サービス系のreconfigure
面倒だったのでPC再起動で代替.
余談
サービス名
snapで入れたdockerのサービス名は docker.service ではなく snap.docker.dockerd.service.
nvidia-driver のバージョン
以下のコマンドで recommended とされるバージョンを入れるべきという言説を見かけた.
ubuntu-drivers devices