siar

Snowy Institute

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 を使ってはいけないらしい.

stackoverflow.com

zenn.dev

やること

  • snap で入れた docker を消す.
snap remove docker
  • docker の公式ドキュメントに従い apt 経由で docker-ce をインストールする

以下ページ参照.

docs.docker.com

  • サービス系のreconfigure

面倒だったのでPC再起動で代替.

余談

サービス名

snapで入れたdockerのサービス名は docker.service ではなく snap.docker.dockerd.service

nvidia-driver のバージョン

以下のコマンドで recommended とされるバージョンを入れるべきという言説を見かけた.

ubuntu-drivers devices