OllamaをPodmanコンテナで動かす方法|Rocky Linux/RHELへのDockerなし導入とOpen WebUI連携手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)ローカルLLM > OllamaをPodmanコンテナで動かす方法|Rocky Linux/RHELへのDockerなし導入とOpen WebUI連携手順
「RHELやRocky Linuxで社内AIを動かしたいが、Dockerのdaemonを入れるのは社内ポリシー上難しい」
「Podmanを使えばDockerなしでOllamaを動かせると聞いたが、具体的な手順がわからない」

そんな悩みを抱えるLinuxエンジニアや情報システム担当者は多い。この記事では、「Podman」を使ってOllamaをRocky Linux 9(RHEL 9互換)に導入する手順を解説する。Ollamaの基本的な仕組みについてはUbuntu ServerでローカルLLMを構築する方法も参考にしてほしい。

この記事のポイント

・PodmanはDockerなしでOllamaをRocky Linux/RHELに動かせるRed Hat標準のコンテナエンジン
dnf install podman 1コマンドでインストール可能・追加リポジトリ不要
・Podmanネットワーク機能でOllamaとOpen WebUIをコンテナ間で安全に接続できる
podman generate systemd とloginctl lingerでサーバー再起動後の自動起動を実現する


OllamaをPodmanコンテナで動かす方法|Rocky Linux/RHELへのDockerなし導入とOpen WebUI連携手順

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

PodmanでOllamaを動かすメリットとDockerとの違い

Podmanは、コンテナイメージの形式がDocker互換(OCI準拠)でありながら、Dockerとはアーキテクチャが根本的に異なる。最大の違いは「デーモンレス設計」だ。

Dockerには常駐する dockerd デーモンが必要だが、Podmanにはデーモンがない。コンテナはユーザーが実行したプロセスとして直接起動し、rootでなくても動かせる(ルートレスコンテナ)。

実務上のメリットは3点だ。
・ルートレスコンテナによりセキュリティリスクを下げられる(コンテナが侵害されてもホストのroot権限を奪いにくい)
・Rocky Linux/RHELの標準リポジトリから追加設定なしに導入できる
・SELinuxを維持したままコンテナ運用できる

情報システム部門のポリシーとローカルLLM導入の関係については社内でChatGPTが使えないときの代替手段でも整理しているので、上司への説明材料として活用してほしい。

Rocky Linux 9/RHELにPodmanをインストールして準備する

Rocky Linux 9(RHEL 9互換)ではPodmanが標準リポジトリに含まれており、dnf でインストールできる。

1. Podmanのインストールと動作確認

$ sudo dnf install -y podman Complete! $ podman --version podman version 4.9.4

バージョンが表示されればインストール完了だ。rootlessモードで動かすことを推奨する。rootlessコンテナのために /etc/subuid/etc/subgid にユーザーエントリが必要だ。Rocky Linux 9ではユーザー作成時に自動設定される。エントリがない場合は sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $(whoami) && podman system migrate で追加する。

2. NVIDIAドライバーとCDIの設定(GPU使用時)

GPUを使う場合は nvidia-container-toolkit をインストールしたあと、Podman向けにCDI(Container Device Interface)設定を生成する。

$ sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml INFO[0001] Generated CDI spec with 1 device(s) # verify registered device IDs $ nvidia-ctk cdi list nvidia.com/gpu=0 nvidia.com/gpu=all

CDIファイルが生成されると、コンテナ起動時に --device nvidia.com/gpu=all でGPUを渡せるようになる。CPUのみのサーバーはこの手順をスキップする。

PodmanでOllamaコンテナを起動してモデルをダウンロードする

OllamaはDockerHub上で ollama/ollama イメージを公開しており、Podmanでそのまま使える。

1. OllamaコンテナをPodmanで起動する

$ podman run -d \ --name ollama \ -p 11434:11434 \ -v ~/.ollama:/root/.ollama:z \ ollama/ollama:latest 9f3b2a1c4e7d8f05...(コンテナIDが表示される)

ボリューム指定の末尾に :z を付けることで、SELinuxのラベルがコンテナに合わせて付与される。Rocky Linux/RHELのSELinuxが有効な環境では必須だ。GPUを使う場合は --device nvidia.com/gpu=all --security-opt=label=disable を追加する。

2. モデルをダウンロードして動作確認する

$ podman exec -it ollama ollama pull mistral:7b-instruct-q4_0 pulling manifest pulling 45f5a88d8... 100% ▕████████████████▏ 4.1 GB success $ curl -s http://localhost:11434/api/tags | python3 -m json.tool | head -4 { "models": [ { "name": "mistral:7b-instruct-q4_0",

VRAM 8GBのサーバーならMistral 7Bや Gemma 3 27B(-q4_0 量子化)が現実的な選択だ。VRAM 16GBあればLlama3.3の中規模モデルも検討できる。モデルの選び方と量子化の違いはローカルLLMのモデルを比較する方法で詳しく解説している。

Podmanネットワークを作成してコンテナ間通信を設定する

OllamaとOpen WebUIを別コンテナで動かす場合、user-defined networkでコンテナ間通信を行う。同一ネットワーク内ではコンテナ名がDNS解決されるためIPアドレスのハードコードが不要だ。

1. Podmanネットワークを作成して両コンテナを起動する

$ podman network create llm-net $ podman run -d \ --name ollama --network llm-net \ -p 11434:11434 -v ~/.ollama:/root/.ollama:z \ ollama/ollama:latest $ podman run -d \ --name open-webui --network llm-net \ -p 3000:8080 -e OLLAMA_BASE_URL=http://ollama:11434 \ -v open-webui-data:/app/backend/data:z \ ghcr.io/open-webui/open-webui:main

OLLAMA_BASE_URL=http://ollama:11434ollama はコンテナ名だ。同一ネットワーク内でDNS解決される仕組みによりIPアドレス指定が不要になる。ブラウザで http://サーバーIP:3000/ にアクセスしてOpen WebUIが表示されれば成功だ。疎通確認は podman exec -it open-webui curl http://ollama:11434/api/tags で行える。

podman generate systemdでOllamaをサービスとして常時起動させる

サーバー再起動後に自動でOllamaが起動するよう、systemdユーザーサービスとして登録する。

1. systemdユニットファイルを生成する

$ mkdir -p ~/.config/systemd/user $ podman generate systemd --new --name ollama \ --files --restart-policy always \ --output-directory ~/.config/systemd/user /home/linuxuser/.config/systemd/user/container-ollama.service $ podman generate systemd --new --name open-webui \ --files --restart-policy always \ --output-directory ~/.config/systemd/user /home/linuxuser/.config/systemd/user/container-open-webui.service

--new オプションを付けることで、既存コンテナに依存せず起動時に新規コンテナを作成するユニットが生成される。

2. systemdユーザーサービスを有効化して起動する

$ systemctl --user daemon-reload $ systemctl --user enable --now container-ollama.service Created symlink ~/.config/systemd/user/default.target.wants/container-ollama.service $ systemctl --user enable --now container-open-webui.service Created symlink ~/.config/systemd/user/default.target.wants/container-open-webui.service $ systemctl --user status container-ollama.service * container-ollama.service - Podman container-ollama.service Active: active (running) since Mon 2026-09-15 09:20:33 JST

3. loginctl lingerでSSHログアウト後も継続させる

PodmanのユーザーサービスはデフォルトでSSHセッションが切れると停止する。注意: linger設定を忘れると、SSHログアウト後にOllamaが停止する。

$ sudo loginctl enable-linger $USER $ loginctl show-user $USER | grep Linger Linger=yes

この設定でサーバー再起動後、SSHログインなしにOllamaとOpen WebUIが自動起動するようになる。

Podman+Ollama構成でよく起きるトラブルと対処法

実際にセットアップすると、RHEL系特有の問題にぶつかることが多い。代表的なケースと対処法を整理する。

SELinuxの拒否エラー(AVC denied / Permission denied)
ボリューム指定に :z(共有ラベル付与)または :Z(専有ラベル付与)を追加する。
例: -v ~/.ollama:/root/.ollama:z
:z は複数コンテナで共有する場合、:Z は1コンテナのみ使う場合に使う。

OllamaコンテナがGPUを認識しない
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml でCDIを再生成してから、コンテナを起動し直す。

Open WebUIがOllamaに接続できない(Connection refused)
両コンテナに --network llm-net が指定されているか確認する。podman exec -it open-webui curl http://ollama:11434/api/tags で疎通テストを行うと問題箇所を特定しやすい。

まとめ

PodmanはRocky Linux/RHEL環境でDockerに依存せずOllamaを動かすための現実的な選択肢だ。デーモンレス・ルートレスという設計がセキュリティポリシーの厳しい企業内サーバーへの導入ハードルを下げる。

この記事で構築したポイントをまとめる。
手順コマンド・設定のポイント
Podmanインストールsudo dnf install -y podman(追加リポジトリ不要)
GPUパススルー--device nvidia.com/gpu=all --security-opt=label=disable
SELinuxボリューム対策-v ~/.ollama:/root/.ollama:z(末尾に :z を付ける)
コンテナ間通信podman network create llm-net → 両コンテナに --network llm-net
systemdサービス化podman generate systemd --new --name ollama --files
ログアウト後も継続sudo loginctl enable-linger $USER

ローカルLLMをRHEL環境で2日間のハンズオンで動かす

Podman・Docker・systemdを使ったOllamaの実機セットアップを体系的に学びたい方向けに、「ローカルAIマスターセミナー」を開催しています。
実機GPU環境でOllamaのインストールからAPI活用・チーム向け公開まで手を動かしながら習得できます。少人数(最大8名)ZOOMハンズオン形式で実施しています。

>> ローカルAIマスターセミナーの詳細を確認する
ローカルLLMの構築・運用に関する関連記事もあわせて参考にしてください。

Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。