コミュニティソリューション

ZimaOS上のNVIDIA Container Toolkit:現在のGPU設定

A generic x86 ZimaOS user with a GTX 1050 wanted NVIDIA Container Toolkit for transcoding and Immich ML but could not use a normal package manager.

現在のZimaOSでは、ホスト上でaptを使ってNVIDIA Container ToolkitをインストールするUbuntu向けの手順に従わないでください。ZimaOSには独自のNVIDIAドライバー/ランタイム統合があり、現在のDockerアプリ向けドキュメントでは、runtime: nvidiaNVIDIA_VISIBLE_DEVICESを使ってGPUコンテナを構成しています。

2025年当時の情報源のユーザーは、GTX 1050を搭載した一般的なx86サーバーを使用しており、ZimaOSには通常のDebianパッケージマネージャーがないことに正しく気づいていました。Alpineコンテナ内でToolkitを実行しても、ホストのランタイムに関する問題は解決できません。NVIDIAランタイムはDockerホストのレイヤーに存在する必要があります。

まずホストのGPUドライバーを確認する

nvidia-smi
lspci -nnk | grep -A3 -Ei 'vga|3d|display'

nvidia-smiがGPUと通信できない場合、最初に確認すべき問題はDocker設定ではありません。

DockerにNVIDIAランタイムがすでにあるか確認する

docker info | grep -i nvidia
ps aux | grep '[d]ockerd'

現在のZimaOSでは、実際には使用していないシステムでも、NVIDIAランタイムを利用可能な状態でDockerが起動していることが一般的です。

ZimaOSのランタイムモデルを使用する

現在のZimaOS NVIDIA Dockerランタイムガイドでは、次のように示されています。

services:
  my-gpu-app:
    image: your/image
    runtime: nvidia
    ipc: host
    environment:
      NVIDIA_VISIBLE_DEVICES: all

別のコンテナにToolkitをインストールしても動作しない理由

NVIDIA Container Toolkitは、ホスト上のDocker/containerdと統合されます。NVIDIAのNVIDIA Container Toolkitインストールガイドでも、nvidia-ctk runtime configureを使ってホストのDocker設定を変更し、Dockerを再起動します。

ZimaOSにaptの手順をそのまま適用しない

NVIDIAのインストールガイドは、ホスト側にパッケージマネージャーがある、Debian/RPM系のサポート対象ディストリビューションを前提としています。現在のZimaOSはそのような方式で管理されていないため、ホスト向けパッケージの手順は、アプライアンスイメージや更新モデルと競合する可能性があります。

コンテナ内でGPUアクセスをテストする

ホストのドライバーとランタイムが正常になったら、GPU対応が確認されているコンテナまたは対象アプリを使い、コンテナ内から実際にデバイスが見えていることを確認してください。

GTX 1050にはワークロード上の制限がある

GTX 1050は一部のNVENC/NVDECトランスコードには十分な場合がありますが、現在のImmichの機械学習などのAIワークロードでは、CUDA、VRAM、モデル、フレームワークに関するより厳しい要件がある可能性があります。「DockerがGPUを認識する」ことは、すべてのアプリがGPUに対応していることを保証するものではありません。

ランタイム設定を変更する前にアプリ設定をバックアップする

元に戻せる状態でない限り、Dockerのサービスファイルやランタイム設定を手動で置き換えないでください。ホストのランタイム設定を誤ると、GPUコンテナだけでなく、すべてのDockerアプリが停止する可能性があります。

現在のGPUコンテナガイドでは、現在と過去のソフトウェア境界について、より詳しく説明しています。

対象アプリ内のランタイムを確認する

ホストでnvidia-smiが実行できても、それはZimaOSホストのドライバーがカードを認識していることを示すだけです。実際にGPU対応として構成したコンテナ内でシェルを開き、デバイスとランタイムを確認してください。そうしないと、ホストのGPUが正常に見えていても、アプリが気づかないうちにCPUへフォールバックする可能性があります。

トランスコードとAI互換性を分けて考える

NVENC/NVDEC対応、CUDAコンピュート機能、VRAM、アプリ固有のフレームワークは、それぞれ異なる制約です。PlexやJellyfinのトランスコードを処理できるカードでも、現在の機械学習モデルには古すぎたり、容量不足だったりする場合があります。

FAQ

ZimaOSでnvidia-container-toolkitをapt installするべきですか?

いいえ。ホストをUbuntuのように扱うのではなく、現在のZimaOS向けNVIDIAランタイムの方式を使用してください。

Alpine Docker内にToolkitをインストールできますか?

いいえ。ランタイム統合はDockerホスト上に存在する必要があります。

DockerがNVIDIAを認識しているか確認するにはどうすればよいですか?

docker info、Dockerデーモンのコマンド/ランタイムを確認し、その後、対象コンテナ内でGPUアクセスを検証してください。

ホストでnvidia-smiが実行できれば、Immich MLも動作すると証明できますか?

いいえ。ホストからドライバーが見えていることを示すだけであり、コンテナとアプリケーションには、互換性のあるCUDA/VRAM/ランタイムのサポートも必要です。