ローカルLLM環境の構築 ~ WSL2×Docker Desktop×NVIDIA Container Toolkit で ollama, open-webui, gemma3 を導入する方法


近年、LLM(大規模言語モデル)の需要が急速に高まり、クラウド上だけでなくローカル環境での運用にも注目が集まっています。本記事では、Windows環境でWSL2を活用し、docker Desktop (docker-compose)と NVIDIA Container Toolkit を利用して、ollama、open-webui、gemma3 をローカルに構築する手順を解説します。
ローカル環境での構築は、データのプライバシー確保や低遅延な推論処理が可能になるなどのメリットがあります。
環境の準備
必要なハードウェア・ソフトウェア
- OS: Windows 10/11
- WSL2: Ubuntu 22.04 以降(例:Ubuntu 24.04)
- Docker Desktop: 最新版(WSL2統合有効)
- NVIDIA GPU: GPU搭載PCの場合は、GPUを利用するために NVIDIA Container Toolkit をインストール
- その他: インターネット接続、十分なRAM(LLMのモデルサイズに応じた容量)
事前準備
-
WSL2のインストール
PowerShell(管理者権限)で以下のコマンドを実行してWSL2とUbuntuディストリビューションをインストールします。 -
Docker Desktopのインストール
Windowsに公式サイトから Docker Desktop をダウンロード・インストールし、WSL2統合を有効にしてください。
WSL2環境でdocker-compose ps
を実行した際に以下のエラーが出る場合は、Docker Desktopを再起動してみてください。なぜか治ります。
The command 'docker-compose' could not be found in this WSL 2 distro. We recommend to activate the WSL integration in Docker Desktop settings. For details about using Docker Desktop with WSL 2, visit: https://docs.docker.com/go/wsl2/
参考:Docker DesktopでWSLの統合を有効にしているのに「`The command 'docker-compose’~」への対応法
-
NVIDIA Container Toolkit のインストール(GPU利用時)
WSL2上のUbuntuに以下の手順でインストールを行います。# 必要なパッケージのインストール sudo apt-get update && sudo apt-get install -y curl gnupg ca-certificates # NVIDIAのGPGキーとリポジトリの追加 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \ | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \ | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit # DockerがNVIDIAランタイムを使用できるように設定 sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
各ツールのインストールと設定(確認用)
ここでは、各種ツールの動作確認を行います。不要な方は、docker-composeによる起動まで飛ばしてください。
ollama の導入
ollama はローカルでLLMの推論を行うためのツールです。
以下は、GPUなしのollamaコンテナを起動する例です。
docker run -d \ -v ollama:/root/.ollama \ -p 11434:11434 \ --name ollama \ ollama/ollama:0.6.2
以下は、GPU対応のollamaコンテナを起動する例です。
docker run -d --gpus=all \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama \
ollama/ollama:0.6.2
ポイント:
-v
オプションでボリュームをマウントし、モデルデータなどの永続化を実現--gpus=all
でGPUを利用する設定- 初回のモデルダウンロードや初期ロードに時間がかかる場合もあるので、時間に余裕を持って実施してください。
- ここでは、ollamaのバージョン:0.6.2を使用しています。
gemma3 の利用
gemma3 は、ollama に対応したLLMモデルのひとつです。
ollamaコンテナ内で以下のコマンドを実行することで、gemma3 の推論を開始できます。
gemma3には、1B / 4B / 12B / 27B のパラメータ数のモデルが提供されています。
動作確認としては1Bで十分なのでgemma3:1bを使用します。PCのリソースが潤沢な方は、gemma3:4b, gemma3:12b, gemma3:27bを試してください。
docker exec -it ollama ollama run gemma3:1b
ポイント:
- モデルのダウンロードには数GBのデータが必要となる場合があるため、安定したネットワーク環境下で実施してください。
- 初回起動時は「初回ロードが遅い」という報告もありますので、キャッシュや常駐設定(例:OLLAMA_KEEP_ALIVE の調整)を検討するのも良いでしょう。
- NVIDIA GeForce RTX 3060(GPUメモリ12GB), メモリ32GBの環境では、gemma3:12bが限界でした。12bを利用し続けているとオーバーヒートでブルースクリーンとなってしまったので、このスペックでは4bが無難そうです。
docker-compose による起動管理
複数のコンテナ(ollama, open-webui など)を同時に起動・管理するために docker-compose を利用する方法を紹介します。
以下は、サンプルの docker-compose.yml
ファイルの例です。
services: ollama: image: ollama/ollama container_name: ollama ports: - "11434:11434" volumes: - ./ollama_data:/root/.ollama deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui ports: - "3000:8080" volumes: - ./open-webui_data:/app/backend/data extra_hosts: - "host.docker.internal:host-gateway" depends_on: - ollama
ポイント:
WARN[0000] /path/to/docker-compose.yml: `version` is obsolete
というエラーメッセージが出た場合は、docker-composeに記載のversionの行を削除してください。上記の例では、versionを消してあります。docker compose V2ではversionが不要になったそうです。
参考:【docker compose】警告`version` is obsoleteの解決法Error saving credentials: error storing credentials - err: fork/exec /usr/bin/docker-credential-desktop.exe: exec format error, out: ``
といエラーメッセージが出た場合はdocker desktopを再インストールすると治ります。
参考:Error saving credentials: error storing credentials – err: fork/exec /usr/bin/docker-credential-desktop.exe: exec format error, out: “ · Issue #14039 · docker/for-win- 各コンテナのデータをホストのフォルダに永続化するため、
volumes
を設定。 depends_on
によって、open-webui が ollama に依存していることを明示。- 必要に応じて、環境変数や追加の設定を調整してください。
使い方
ブラウザにlocalhost:3000と入力し、アカウント登録をするとチャット画面が表示されます。
GPUも使われているようです。
参考
- Gemma3をローカル環境のDockerで動かす(Ollama+OpenWebUI)
- WSL2とDockerでWindows上にOllamaを構築する
- Windows | Docker Docs
- Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit
- Docker DesktopでWSLの統合を有効にしているのに「`The command 'docker-compose’~」への対応法
- 【docker compose】警告`version` is obsoleteの解決法
- Error saving credentials: error storing credentials – err: fork/exec /usr/bin/docker-credential-desktop.exe: exec format error, out: “ · Issue #14039 · docker/for-win
まとめ
本記事では、WSL2 環境下で docker Desktop (docker-compose)と NVIDIA Container Toolkit を利用し、ollama、open-webui、gemma3 をローカル環境に構築する方法を解説しました。
各ツールのインストールから、docker-compose を使った複数コンテナの管理まで、具体的なコマンド例や設定例を示しています。
これにより、ローカルでのLLM運用が容易になり、迅速な開発や安全なデータ管理が可能となります。
ぜひ、ご自身の環境に合わせてカスタマイズし、効率的なLLM環境を構築してください。