LinuxMintでローカルAI(3)Open WebUIをDockerで動かす。ハマり所の解決法、便利コマンド集も

今まで、ローカル環境で大規模言語モデル(LLM)を簡単に実行・管理できるツールとして第1回目としてLM Studioをご紹介し、第2回目は、端末上のOllamaによりPCにダウンロードしたAIモデルを利用しブラウザーで利用できるようにOpen WebUIをPythonによる仮想環境上で動作させる方法についてご紹介させていただきました。

第3回目となる今回は、Pythonではなく、Docker上で動作させる手順について見ていきたいと思います。
最後には便利な管理コマンドもまとめてみました。

なお、私の場合、すんなりとは行きませんでした。ハマってしまった点と対処法についてもまとめてみました。

記事の内容

PythonとDocker、どちらがいいの?

Open WebUIを、PythonとDockerの、いずれで稼働させても体感的に差はありません。

企業環境でDocker利用が制限されている場合、開発でOpen WebUIのコードをローカルで直接いじってデバッグしたい場合、Python上で動かすことになりますが、日常での運用面でいくとDockerの方が管理が楽です。

Pythonの場合、仮想環境であるvenvを分けても、実行ユーザーやsystemd設定がホストに残りやすいです。Dockerでは不要になったら「docker rm」で完全撤収ができます。環境を壊してしまっても「docker run/compose」で素早く復旧できて便利です。

・・・というわけで、Docker上で作動させていきたいと思います。

事前準備

Docker本体のインストール

sudo apt update
sudo apt install -y docker.io

自分のユーザーをdockerグループに追加させます。

sudo usermod -aG docker $USER

設定を反映させます。

newgrp docker

dockerが自動起動するようにします。

sudo systemctl enable --now docker

動作確認してみましょう

docker run --rm hello-world

次のように表示されれば正常に動作しています。

Ollamaのインストールとモデルの取得

インターネットに接続した状態で、ターミナルで以下のコマンドを実行するだけで、ローカルLLMを管理・実行するためのフレームワーク「Ollama」がインストールされます。

curl -fsSL https://ollama.com/install.sh | sh

Ollamaを自動起動させるようにします。

sudo systemctl enable --now ollama

モデルを取得します。(例:人気のGoogleのgemma3の場合)

ollama pull gemma3

動作を確認します。一覧にgemma3が表示されていればOKです。

curl -s http://127.0.0.1:11434/api/tags

DockerでOpen WebUIを起動

Open WebUIのデータ永続化用のボリュームを作成します。

docker volume create open-webui-data

Open WebUI を host ネットワークモードで起動

docker run -d --name open-webui \
  --network host \
  -v open-webui-data:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  ghcr.io/open-webui/open-webui:main

起動確認

ブラウザで「localhost:8080」でEnter。

初回は名前、メールアドレス、パスワードを登録して管理者アカウントを作成します。

次のように端末で「ollama pull モデル名」で複数のAIモデルをダウンロードしておけば、モデルを切り替えて使用することができます。

ollama pull gpt-oss:20b
ollama pull ph4-reasoning:14b

稼働状況を確認するコマンド

次のコマンドでOpen WebUIが稼働しているかどうかを確認できます。

docker ps -a | grep open-webui
docker上のOpen WebUIの稼働状況確認

Open WebUIの開始、停止、再起動方法

次のコマンドでOpen-WebUIを開始します。

docker start open-webui

停止は次のコマンドです。

docker stop open-webui

改めて起動させるコマンドは次の通りです。

docker start open-webui

再起動させるコマンドは次の通りです。

docker restart open-webui

Open-WebUIのアップデート手順

1,最新イメージを取得します。(かなり時間がかかります)

docker pull ghcr.io/open-webui/open-webui:main

2,現在のコンテナを停止・削除

docker stop open-webui
docker rm open-webui

3,再度コンテナを起動

docker run -d --name open-webui \
  --network host \
  -v open-webui-data:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  ghcr.io/open-webui/open-webui:main

ハマってしまったポイントと対処法

1) docker コマンドが「permission denied」

1) docker コマンドが「permission denied」
症状: permission denied while trying to connect to the Docker daemon socket
原因: ユーザーが docker グループに未所属、または再ログインしていない

対処法:

sudo usermod -aG docker $USER
newgrp docker # または一度ログアウト/ログインします。

2) Open WebUI には入れるがモデルが出ない

ホスト→Ollama 下記コマンドでJSONで返答が表示されたらUI側の設定を確認。

curl -s http://127.0.0.1:11434/api/tags

コンテナ→Ollama(hostモードなら同じループバックでOK)

docker exec -it open-webui sh -lc 'apk add --no-cache curl >/dev/null 2>&1 || true; curl -s http://127.0.0.1:11434/api/tags'

3)再起動後も自動で起動させたい

下記を端末上で実行させて解決

docker run -d --restart unless-stopped --name open-webui \
--network host \
-v open-webui-data:/app/backend/data \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
ghcr.io/open-webui/open-webui:main

不具合発生時のチェックリスト

不具合が発生して困ったときのための備忘録としてまとめておきます。

起動状態の確認、名前衝突していないかを確認

docker ps -a 

エラーメッセージを確認

docker logs open-webui

Ollamaが稼働しているかを確認

curl -s http://127.0.0.1:11434/api/tags

ポート競合していないかを確認

sudo lsof -i :8080

Dockerの管理コマンド集

Dockerの管理コマンドをカテゴリ別にまとめてみました。

1. 基本情報の確認

コマンド説明
docker ps稼働中コンテナ一覧(ID、名前、ポート、起動時間)
docker ps -a停止中も含めた全コンテナ一覧
docker imagesローカルにあるイメージ一覧
docker volume ls永続化ボリューム一覧
docker network lsDocker ネットワーク一覧

2. コンテナの操作

コマンド説明
docker start open-webui停止中のコンテナを起動
docker stop open-webuiコンテナを停止
docker restart open-webui再起動
docker rm open-webuiコンテナ削除(ボリュームは残る)
docker exec -it open-webui bashコンテナ内に入って作業(bash)
docker exec -it open-webui shAlpineベースならshで入る
docker logs -f open-webuiログをリアルタイム表示(-fで追従)

3. イメージ管理

コマンド説明
docker pull ghcr.io/open-webui/open-webui:main最新イメージ取得
docker rmi <IMAGE_ID>イメージ削除
docker image prune未使用イメージを一括削除
docker system prune -a未使用コンテナ・イメージ・ネットワーク一括削除(慎重に)

4. ボリューム管理(データ永続化)

コマンド説明
docker volume inspect open-webui-dataボリューム詳細情報(ホストパス確認可)
docker run --rm -v open-webui-data:/data alpine ls /dataボリュームの中身を確認
docker volume rm open-webui-dataボリューム削除(データ消える)
docker volume prune未使用ボリュームを削除

5. ネットワーク関連

コマンド説明
docker network inspect bridgebridgeネットワーク詳細
docker network inspect <NETWORK>任意ネットワークの詳細
docker run --rm --network host alpine ping -c 3 127.0.0.1hostネットワーク動作確認

6. リソース監視

コマンド説明
docker statsコンテナのCPU/メモリ/ネットワーク使用状況リアルタイム表示
docker inspect open-webuiコンテナの詳細情報(環境変数、マウント、ネットワーク)
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

情報環境コミュニケーションズ 代表
企業、団体のITコンサル、サポート、システム構築/管理、大学の招聘研究員として大規模調査の設計、集計の効率化、解析などを行っています。
最近ではAI開発環境の構築のサポートも行うようになってきました。
<著書>2008年〜2015年、テクニカルライターとして、週間アスキー、Ubuntuマガジン、Linux 100%, Mac 100%, Mr.PCなど多数のIT系雑誌に寄稿。

コメント

コメントする

記事の内容