在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)

32 阅读6分钟

本教程适用于:已经安装好 Docker Desktop for Mac 的用户。如果你还没装 Docker,本教程也会给出安装步骤。


一、前置条件检查

1. 检查 macOS 版本

在「终端」中执行:

sw_vers

确认:

  • ProductName: macOS
  • ProductVersion: 建议 12 (Monterey) 及以上

2. 检查是否已安装 Docker

docker --version
  • 如果能看到类似 Docker version 27.x.x,说明已安装;
  • 如果提示 command not found,请先安装 Docker Desktop。

3. 安装 / 升级 Docker Desktop(如有需要)

  1. 打开浏览器访问 Docker 官网:
    • 访问 https://www.docker.com/products/docker-desktop/
  2. 下载 Mac 版本 (Apple Silicon 或 Intel 对应选择) 的安装包(.dmg)。
  3. 双击下载的 .dmg 文件,将 Docker 图标拖动到 Applications(应用程序)中。
  4. 从「启动台」中打开 Docker Desktop,首次启动可能会提示授权,按提示点击 OK允许
  5. 右上角状态栏出现 Docker 小鲸鱼图标后,等待其变成 Docker is running 状态。

建议:在第一次使用前,打开 Docker Desktop → SettingsResources,确保:

  • CPU 至少分配 4 核
  • 内存至少分配 8 GB(如果你要跑大模型可以给到 16 GB 或更高)

二、使用 Docker 运行 Ollama 的基本思路

Ollama 官方提供了 Docker 镜像,我们在 macOS 上的步骤大致是:

  1. 拉取(或直接运行) Ollama 的 Docker 镜像;
  2. 使用 -v 挂载本地目录用来保存模型数据(防止容器删了模型也没了);
  3. 暴露容器端口,让本机或其他应用可以通过 HTTP 访问 Ollama API;
  4. 在容器中拉取所需模型(如 qwen2.5:7bllama3 等);
  5. 可选:设置开机自启或使用 docker compose 管理。

三、拉起 Ollama 容器(推荐命令)

1. 创建本地数据目录

建议在你的用户目录下创建一个专门目录保存 Ollama 模型数据:

mkdir -p ~/ollama/ollama-data

2. 运行 Ollama 容器(一次性命令)

在终端中执行下面这个命令(Apple Silicon / Intel 通用):

docker run -d \
  --name ollama \
  --platform linux/arm64 \
  --restart unless-stopped \
  -p 11434:11434 \
  -v ~/ollama/ollama-data:/root/.ollama \
  -e OLLAMA_HOST=0.0.0.0 \
  -e OLLAMA_NUM_PARALLEL=4 \
  -e OLLAMA_MMAP=true \
  --cpuset-cpus="0-7" \
  --memory="12g" \
  --memory-swap="18g" \
  ollama/ollama:latest

参数说明:

  • -d: 后台运行容器
  • --name ollama: 容器名称为 ollama,方便后续管理
  • --restart unless-stopped: 开机自动启动容器,除非你手动停止
  • -p 11434:11434: 将容器的 11434 端口映射到本机相同端口
  • -v ~/ollama/ollama-data:/root/.ollama: 将本机目录挂载为容器中的模型存储目录
  • ollama/ollama:latest: 使用官方最新 Ollama Docker 镜像

如需指定架构或版本,可以将 ollama/ollama:latest 替换为具体 tag,例如:ollama/ollama:0.4.0

3. 确认容器是否运行成功

docker ps

确认输出中有一行类似:

CONTAINER ID   IMAGE                COMMAND       ...   NAMES
xxxxxx         ollama/ollama:latest ...          ...   ollama

如果未启动成功,可用下面命令查看日志:

docker logs -f ollama

四、在容器中拉取模型并测试

1. 进入容器的 shell

docker exec -it ollama bash

进入容器后,命令行前缀会变成类似:

root@<container_id>:/#

2. 在容器里拉取模型

以 Qwen 系列模型为例:

ollama pull qwen2.5:7b

如果你想用其他模型:

  • 拉取 Llama 3:
ollama pull llama3
  • 拉取 Qwen 1.5 7B:
ollama pull qwen:7b

模型会下载到 /root/.ollama,因为做了数据卷映射,所以实际被保存到你本机的 ~/ollama/ollama-data 中,下次重启不会重新下载。

3. 在容器里直接对话测试

拉取完模型之后,在容器 shell 中执行:

ollama run qwen2.5:7b

第一次运行会加载模型,稍等片刻,然后你会看到一个交互式对话界面:

>>> 你好

可以简单测试:

>>> 用一句话自我介绍

输入 Ctrl + C 退出对话,再输入 exit 退出容器 shell。


五、在 mac 上通过 HTTP API 调用 Ollama

只要 Docker 容器在运行,你的 Mac 就可以通过 http://localhost:11434 调用 Ollama 的 API。

1. 用 curl 直接测试

宿主机 mac 终端(不是容器里)执行:

curl http://localhost:11434/api/generate \ 
  -d '{
    "model": "qwen2.5:7b",
    "prompt": "用中文简要介绍一下你是谁",
    "stream": false
  }'

如果配置正确,你会收到一段 JSON 输出,其中 response 字段就是模型的回答。

2. 用 Python 调用示例

在 mac 上可以新建一个 test_ollama.py

import requests

url = "http://localhost:11434/api/generate"

data = {
    "model": "qwen2.5:7b",
    "prompt": "用中文解释一下大语言模型是什么",
    "stream": False,
}

resp = requests.post(url, json=data)
resp.raise_for_status()

print(resp.json()["response"])

运行:

python3 test_ollama.py

若能正常输出中文回答,说明 Docker 里的 Ollama 已经可以通过 HTTP 正常调用。


六、常用管理命令(Docker 版本 Ollama)

1. 停止 Ollama 容器

docker stop ollama

2. 再次启动 Ollama 容器

docker start ollama

3. 查看容器日志

docker logs -f ollama

4. 删除容器(不会删模型数据,因为模型在挂载卷里)

docker rm -f ollama

如需完全清理模型数据,再删除本地数据目录:

rm -rf ~/ollama/ollama-data

七、使用 docker compose(可选,推荐)

如果你希望管理更方便,可以使用 docker-compose

  1. 在某个工作目录下新建 docker-compose.yml
version: "3.9"
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ~/ollama/ollama-data:/root/.ollama
    restart: unless-stopped
  1. 在该目录中执行:
docker compose up -d
  1. 常用管理命令:
# 停止
docker compose down

# 查看日志
docker compose logs -f

# 重启
docker compose restart

八、常见问题排查

  • 问题 1:docker: command not found

    • 原因:未安装 Docker 或未添加到 PATH
    • 解决:安装 Docker Desktop,并重启终端
  • 问题 2:Cannot connect to the Docker daemon

    • 原因:Docker Desktop 未启动或启动失败
    • 解决:
      • 确认右上角是否有小鲸鱼图标
      • 打开 Docker Desktop,等待状态变为 Running
  • 问题 3:port 11434 is already allocated

    • 原因:端口 11434 已被其他进程或容器占用
    • 解决:
      • 查看占用该端口的容器:docker ps | grep 11434
      • 停止冲突容器或修改映射端口,例如使用 -p 11435:11434
  • 问题 4:模型下载过慢或失败

    • 尝试:
      • 使用稳定的网络环境或代理
      • 重新执行 ollama pull 模型名

以上步骤在一台普通 mac(Docker Desktop 已安装)上即可完整复现:

  1. 启动 Docker Desktop;
  2. 运行 docker run ... 命令拉起 Ollama 容器;
  3. 在容器中 ollama pull 需要的模型;
  4. 在 mac 上通过 curl 或 Python 访问 http://localhost:11434/api/generate 完成调用。 5.启动openWebUI
-p 3000:8080 \

--add-host=host.docker.internal:host-gateway \

-v open-webui:/app/backend/data \

--restart unless-stopped \

--name open-webui \

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