LoginSignup
0
0

More than 1 year has passed since last update.

UbuntuのdockerでGPUを使う場合snapでインストールしてはいけない

Posted at

この記事について

この記事は筆者がUbuntu 21.04でdockerでGPUを使おうとしたときにハマった落とし穴のメモです。

経緯

UbuntuではSnappyというaptにかわるパッケージマネージャが用意されています(コマンドはsnap)。
Ubuntu Server 21.04ではOSの初期インストール時にdockerやmicrok8sなどのパッケージをこのsnapでインストールできるオプションがあり、筆者はこれでdockerをインストールしていました。

その後、dockerでGPUを使うためにNVIDIA Container Toolkitをインストールしたのですが、この途中でaptからdockerをインストールしてしまったようです。
インストールガイドに書かれている明示的なdockerインストールのコマンドは実行していないので、おそらく依存関係で勝手にインストールされたのだと推測されます。

この状態でOSを再起動すると、snap版とapt版の二種類のdockerが同時に起動してしまいます。
systemctlではそれぞれsnap.docker.dockerd.servicedocker.serviceという名称で、systemctl status <サービス名>で確認するとそれぞれ異なるログが確認できます。
Dockerイメージも別々に管理されるようで、完全に別物のようです。

NVIDIA Container Toolkitの対応状況としてはapt版のdockerはGPUを使えましたが、snapのdockerでは--gpus allのオプションをつけるとエラーになり、コンテナを起動できませんでした。

筆者の環境では、両方起動している状態では、dockerコマンドはsnap版が優先されました。
そのため、二重起動している状態ではdocker --gpus allが失敗し、snap版dockerを停止すると成功する、という状況になります。

対策

snap版をサービスとして無効化するsystemctl disable snap.docker.dockerd.serviceかアンインストールsnap remove dockerしてapt版だけ使うようにすればGPUが使えるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0