先講結論
- 官方一行指令就能跑起來,我在 4 核心的測試機上連下載映像檔共 55 秒,再用 docker exec ollama ollama pull 下載模型。1B 的小模型每秒產生 14 到 16 個 token,跟直接安裝在同一個水準。
- 代價是空間。映像檔下載 3.8 GB,我這台的硬碟多用了 8.9 GB,直接安裝只要 2.1 GB。進去看,裡面有 4.8 GB 是 NVIDIA 顯卡用的函式庫,沒有顯卡也會整包下載。
- 模型存在 ollama 這個 volume 裡,刪掉容器、更新映像檔重建,模型都還在。改用 docker compose 要小心,預設的 volume 名稱會加上資料夾名稱,我第一次起來模型清單是空的。Mac 的 Docker 用不到顯卡,官方建議直接裝 App。
目錄
你已經用 Docker 跑了 n8n 或 Open WebUI,想把 Ollama 也放進 Docker 一起管;或是要裝在一台主機上,不想把東西直接裝進系統裡。官方給的指令只有一行,真的用起來會碰到幾個問題:映像檔多大、模型存在哪、更新會不會不見、別的容器怎麼連進來、顯卡怎麼開。
我開了一台 4 核心、8 GB 記憶體、沒有顯卡的雲端測試機,把官方的 Docker 映像檔從頭跑一遍,包括更新、docker compose、從別的容器連進來。顯卡的部分我的機器沒有,照官方文件寫,文中會標出來。
Ollama 本身是什麼、指令怎麼用,看 Ollama 教學;還沒裝 Docker 的話,先看 Docker 是什麼、怎麼裝。
先想一下:要不要用 Docker
用 Docker 跑的好處是跟其他容器一起管理,刪掉也乾淨,不會在系統裡留東西。缺點有兩個。第一是空間,官方映像檔讓我這台的硬碟多用了 8.9 GB,直接安裝只要 2.1 GB,原因在後面。第二是 Mac:官方 FAQ 寫明,Mac 的 Docker Desktop 沒辦法把顯卡交給容器,所以 GPU 加速用不了。
我的建議是:Mac 直接裝 Ollama 的 App;Windows 和 Linux,如果本來就用 Docker 跑其他服務,Ollama 也放進去很順;只是想在自己電腦上玩玩模型,直接安裝比較省空間。
一行指令跑起來
官方文件給的是這一行(只用 CPU 的版本):
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
幾個參數的意思:
| 參數 | 意思 |
|---|---|
-d |
在背景跑 |
-v ollama:/root/.ollama |
模型存到一個叫 ollama 的 volume,容器刪掉模型還在 |
-p 11434:11434 |
把容器的 11434 埠開到主機上,API 就在這裡 |
--name ollama |
容器取名叫 ollama,之後的指令都用這個名字 |
在我的測試機上,這行連同第一次下載映像檔花了 55 秒,跑起來之後 1 秒內 API 就有回應,版本是 0.40.4。啟動紀錄裡可以看到它先找顯卡,找不到就改用 CPU,寫著 inference compute id=cpu library=cpu。
下載模型、開始問
容器跑起來之後,平常的 ollama 指令前面加上 docker exec ollama 就行,意思是在這個容器裡執行:
docker exec ollama ollama pull gemma3:1b-it-qat
docker exec -it ollama ollama run gemma3:1b-it-qat
第一行下載 1 GB 的 Gemma 3 1B,我這台花了 6 秒。第二行進入對話畫面,跟直接安裝的用法一樣。
不加 -it、把問題直接接在後面,問完就會結束。我讓它「用繁體中文一句話介紹台灣」,5 秒後回了「台灣是一個充滿活力和獨特的島嶼,以豐富的文化、美麗的自然風光和熱情的人民聞名。」,後面還多一句「希望這個回答對您有幫助!」。要注意的是,這樣輸出的開頭會夾著一串轉圈圈的符號(⠋⠙⠹ 這種),要存成檔案或給程式讀的話,改用 API 比較乾淨。
速度我用上一篇比較 LM Studio 時的同樣三題,從主機打 API、每題問兩次,每秒產生 14.2 到 16.5 個 token。上一篇在同規格的另一台機器上直接安裝 Ollama,是 15.8 到 18.2 個。兩台機器的處理器不一定一樣,我只能說在同一個水準,看不出 Docker 拖慢多少。記憶體整台用了 1,566 MB,直接安裝那次是 1,610 MB。
代價:硬碟多用了 8.9 GB
這是用 Docker 跑之前最該知道的事。Docker Hub 上 amd64 版的映像檔是 3.8 GB,下載完我這台的硬碟多用了 8.9 GB,docker images 顯示 9.36 GB。對照上一篇直接安裝 Ollama,整個程式只有 2.1 GB。
我進到容器裡看,/usr/lib/ollama 這個資料夾就有 4.8 GB,其中 2.7 GB 是 mlx_cuda_v13、1.3 GB 是 cuda_v12、816 MB 是 cuda_v13,都是給 NVIDIA 顯卡用的函式庫。沒有顯卡的機器也會整包下載。硬碟上的數字又比解開的檔案大,是因為我裝的 Docker 29 用 containerd 存映像檔(docker info 顯示 io.containerd.snapshotter.v1),壓縮檔和解開後的檔案都佔空間。
AMD 顯卡用的 rocm 版本,Docker Hub 上顯示是 1.45 GB。
模型存在哪,更新會不會不見
-v ollama:/root/.ollama 是把容器裡放模型的資料夾,存到一個叫 ollama 的 Docker volume。容器刪掉,volume 還在。我在主機上看,它在 /var/lib/docker/volumes/ollama/_data,下載一個模型之後是 958 MB。
更新就是拉新版映像檔、刪掉舊容器、用同一行指令重建:
docker pull ollama/ollama
docker rm -f ollama
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
我照這樣做,重建只花 2 秒,ollama list 裡的模型還在,不用重新下載。重點是第三行的 -v ollama: 要跟原本一模一樣,寫成別的名字,就會掛上一個空的 volume,看起來像模型全不見了。直接安裝(不是 Docker)的 Ollama 怎麼更新,在 Ollama 怎麼更新、看版本、改 port。
用 docker compose
比較多人會把設定寫成 compose.yaml,之後用 docker compose up -d 啟動。我用的是這份:
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama:/root/.ollama
restart: unless-stopped
volumes:
ollama:
port 我寫成 127.0.0.1:11434:11434,只讓這台電腦自己連,理由在後面「不要把 11434 開到網路上」那一節。restart: unless-stopped 是主機重開機後自動跑起來。
這裡有一個坑,我實際踩到了。我先用 docker run 跑過、下載了模型,再改用 compose 起來,結果 ollama list 是空的。原因是 compose 會在 volume 名稱前面加上資料夾名稱:我的資料夾叫 myai,它就新建了一個 myai_ollama,沒有用原本那個 ollama。
要沿用原本的 volume,在最下面加一行 external: true:
volumes:
ollama:
external: true
改完重新 docker compose up -d,模型就都在了,docker port ollama 也顯示只開在 127.0.0.1:11434。如果你是第一次裝、還沒有模型,用前面那份就好,不需要加。compose 的更新方式是 docker compose pull 再 docker compose up -d,這兩行我這次沒有另外測。
讓 n8n、Open WebUI 這些容器連得到
這是最常卡住的地方。在別的容器裡打 localhost:11434 是連不到的,因為容器裡的 localhost 指的是它自己。我從另一個容器實測了四種寫法:
| 從另一個容器連 | 結果 |
|---|---|
http://localhost:11434 |
連不到(Failed to connect) |
http://ollama:11434,沒放在同一個網路 |
找不到這個名稱(Could not resolve host) |
http://ollama:11434,兩個容器在同一個網路 |
連得到 |
http://host.docker.internal:11434,加上 --add-host |
連得到 |
同一個網路的做法是 docker network create ainet 建一個網路,docker network connect ainet ollama 把 Ollama 接上去,另一個容器啟動時加 --network ainet。如果兩個服務寫在同一份 compose 裡,compose 會自動把它們放在同一個網路,用服務名稱就連得到。
host.docker.internal 是從容器連回主機的名字。Linux 上要在另一個容器加 --add-host=host.docker.internal:host-gateway,Open WebUI 官方的安裝指令就是這樣寫的,細節在 Open WebUI 那篇。要注意,我測這條路的時候,Ollama 的 port 是開在所有網路介面上;如果照前面的 compose 只開給 127.0.0.1,這條路應該就不通了,改用同一個網路比較穩。
n8n 的 AI Agent 怎麼接 Ollama,在 n8n AI Agent 教學。Langflow 接 Ollama 還多一關:它預設會擋掉本機和內網位址,要另外設白名單,實測在 Langflow 教學。
不要把 11434 直接開到網路上
我看了官方映像檔的設定,裡面預設 OLLAMA_HOST=0.0.0.0:11434,再加上 -p 11434:11434,主機上所有網路介面都連得到。Ollama 的 API 沒有密碼。在雲端主機上照官方那行指令跑,等於任何知道 IP 的人都能用你的模型、佔你的資源。
Docker 官方文件還提醒一件事:用 -p 開出去的 port,流量會在經過 ufw 防火牆規則之前就被轉走,也就是說你在 ufw 擋了 11434,可能根本沒擋到。
放在主機上的話,把 -p 寫成 127.0.0.1:11434:11434,其他容器走內部網路連。真的要從外面連,前面加一層有驗證的反向代理。
有顯卡的話
這一節我的測試機沒有顯卡,照官方文件寫。
NVIDIA 顯卡要先在主機裝 NVIDIA Container Toolkit(官方文件有 apt 和 yum 的步驟),裝完設定 Docker 用它,再加 --gpus=all 啟動:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Windows 要透過 WSL2,官方 FAQ 寫 Linux 和 Windows(WSL2)都能用 NVIDIA 顯卡加速。AMD 顯卡改用 rocm 版本:
docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm
官方文件另外寫,一般的 ollama/ollama 映像檔已經包含 Vulkan,容器拿得到顯卡裝置就會自動啟用。
沒有顯卡、或還沒裝 NVIDIA Container Toolkit 就加 --gpus=all 會怎樣,這個我測了:我這台的 Docker 29 直接拒絕啟動,錯誤訊息是 failed to discover GPU vendor from CDI: no known GPU vendor found。看到這行,就是 Docker 找不到可以用的顯卡。
有沒有真的用到顯卡,看 docker exec ollama ollama ps 的 PROCESSOR 欄。官方 FAQ 的說明是:100% GPU 是整個模型都在顯卡上,100% CPU 是完全沒用到顯卡(我這台就是這樣),兩個比例並列是一部分在顯卡、一部分在記憶體。
不想用自己的電腦:放在雲端主機
想讓 Ollama 一直開著給 n8n 這類自動化流程用,可以放在一台雲端主機上。Hostinger 有 Ollama 的一鍵安裝,頁面上寫有內建的 Docker 管理工具,最便宜的方案是 2 核心、8 GB 記憶體,10 月 15 日官網顯示首期每月 8.99 美元,續約每月 14.99 美元。這個範本我沒有用過。Ollama 要選 Hostinger 哪一級方案、續約價多少,我整理在 Hostinger 評價。
要先說清楚:這類主機都沒有顯卡,跑模型全靠 CPU。我這台 4 核心跑 1B 的模型每秒 14 到 16 個 token;換成 3B 到 4B 的模型,之前在 Ollama 模型推薦 測到的是每秒 6 到 10 個。2 核心的方案只會更慢。適合放小模型、做摘要和分類這類短任務,想跑大模型就不適合。各家主機的月費和續約價,在 VPS 推薦哪一家。
這篇沒有測的
NVIDIA、AMD 顯卡和 Vulkan;Mac 和 Windows 的 Docker Desktop;docker compose pull 的更新流程;反向代理和驗證;Hostinger 的 Ollama 範本;比 1B 更大的模型。
常見問題
Ollama 用 Docker 跑還是直接安裝比較好?
本來就用 Docker 跑 n8n、Open WebUI 這些服務,Ollama 也放 Docker 比較好管;只是想在自己電腦上玩模型,直接安裝比較省空間,我實測直接安裝佔 2.1 GB,Docker 映像檔讓硬碟多用了 8.9 GB。Mac 一定要直接安裝,因為 Mac 的 Docker Desktop 用不到顯卡。只用 CPU 的話,兩種跑起來速度差不多。
Docker 裡的 Ollama 怎麼用 GPU?
NVIDIA 顯卡要先在主機裝 NVIDIA Container Toolkit、設定 Docker 用它,啟動時加 --gpus=all;AMD 顯卡改用 ollama/ollama:rocm 這個版本,再加 --device /dev/kfd --device /dev/dri。有沒有真的用到顯卡,看 ollama ps 的 PROCESSOR 欄。沒有顯卡卻加 --gpus=all,我這台的 Docker 直接拒絕啟動。
n8n 或 Open WebUI 連不到 Docker 裡的 Ollama?
在別的容器裡打 localhost 是連不到的,容器裡的 localhost 是它自己。我實測可以的寫法有兩種:兩個容器放在同一個 Docker 網路,用 http://ollama:11434;或用 http://host.docker.internal:11434,Linux 上要在另一個容器加 --add-host=host.docker.internal:host-gateway。
Docker 裡的 Ollama 怎麼更新?模型會不見嗎?
docker pull ollama/ollama 拉新版,docker rm -f ollama 刪掉舊容器,再用原本那一行指令重新啟動。只要 -v 的 volume 名稱跟原本一樣,模型都還在。我實測重建只花 2 秒,模型清單沒有變。
這篇怎麼查證的
這篇只有一部分實際跑過,其餘依官方文件整理,查證日期 2026/10/15(Ollama 0.40.4 的官方 Docker 映像檔(ollama/ollama:latest,10 月 14 日版),Docker Engine 29.9.1、Compose 5.6.0,跑在 Vercel Sandbox 的雲端測試機(Ubuntu、4 核心、8 GB 記憶體、沒有顯卡)。只用 CPU 的安裝、下載模型、速度、更新、docker compose、容器之間的連線都實際跑過;NVIDIA、AMD 顯卡和 Mac、Windows 的 Docker Desktop 依官方文件)。哪些有跑、哪些沒跑,文中各段有寫。價格與方案以官方頁面為準,工具改版後內容可能過期。