ローカルLLMを動かすために、OllamaとOpen WebUIをDockerで動かすことにした。

GPUのあるPCのため、Docker(コンテナ)とGPUを連携させるための経緯を記載する。

結論

Docker Desktopを利用しない。Docker Engineを利用すると解決した。

NvidiaのドライバーやNVIDIA Container Toolkit (旧 NVIDIA Container Runtime)のインストールは割愛する。

失敗例: Docker Desktopを利用する

最初は、Docker Desktopをインストールした。

ドライバーとNVIDIA Container Toolkitをインストールし、docker info | grep Runtimeでランタイムチェックをしたが…

 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc

runtimeでnvidiaが存在しなかった。再インストールしたが変わらなかった。

成功例: Docker Engineを利用する

Docker Desktopと付随するパッケージをアンインストールし、Docker Engineをインストールした。

Docker Desktopと同じく、ドライバーとNVIDIA Container Toolkitをインストールした。

ランタイムチェックをするとnvidiaが存在していた。

 Runtimes: runc io.containerd.runc.v2 nvidia
 Default Runtime: runc

sudo vim /etc/docker/daemon.jsonでdefault-runtimeをnvidiaに設定する。

{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "args": [],
      "path": "nvidia-container-runtime"
    }
  }
}

この設定を追加することで、毎回gpusオプションを使わなくて良い。

Docker Desktopとnvidiaのランタイムは相性が悪かったようだ。