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

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


一、前置条件检查

1. 检查 macOS 版本

在「终端」中执行:

bash 复制代码
sw_vers

确认:

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

2. 检查是否已安装 Docker

bash 复制代码
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 模型数据:

bash 复制代码
mkdir -p ~/ollama/ollama-data

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

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

bash 复制代码
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_KEEP_ALIVE=24h \
  -e OLLAMA_MMAP=true \
  --cpus="5" \
  --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. 确认容器是否运行成功

bash 复制代码
docker ps

确认输出中有一行类似:

text 复制代码
CONTAINER ID   IMAGE                COMMAND       ...   NAMES
xxxxxx         ollama/ollama:latest ...          ...   ollama

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

bash 复制代码
docker logs -f ollama

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

1. 进入容器的 shell

bash 复制代码
docker exec -it ollama bash

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

text 复制代码
root@<container_id>:/#

2. 在容器里拉取模型

以 Qwen 系列模型为例:

bash 复制代码
ollama pull qwen2.5:7b

如果你想用其他模型:

  • 拉取 Llama 3:
bash 复制代码
ollama pull llama3
  • 拉取 Qwen 1.5 7B:
bash 复制代码
ollama pull qwen:7b

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

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

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

bash 复制代码
ollama run qwen2.5:7b

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

text 复制代码
>>> 你好

可以简单测试:

text 复制代码
>>> 用一句话自我介绍

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


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

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

1. 用 curl 直接测试

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

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

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

2. 用 Python 调用示例

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

python 复制代码
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"])

运行:

bash 复制代码
python3 test_ollama.py

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


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

1. 停止 Ollama 容器

bash 复制代码
docker stop ollama

2. 再次启动 Ollama 容器

bash 复制代码
docker start ollama

3. 查看容器日志

bash 复制代码
docker logs -f ollama

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

bash 复制代码
docker rm -f ollama

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

bash 复制代码
rm -rf ~/ollama/ollama-data

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

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

  1. 在某个工作目录下新建 docker-compose.yml
yaml 复制代码
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. 在该目录中执行:
bash 复制代码
docker compose up -d
  1. 常用管理命令:
bash 复制代码
# 停止
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 完成调用。

如果你希望,我可以再帮你在本项目里加一个 Python/Notebook 示例,直接调用 Docker 里的 Ollama。

相关推荐
黑心老魔2 小时前
通过 Docker 创建开发环境
docker·开发环境
冬奇Lab16 小时前
一天一个开源项目(第41篇):Workout.cool - 现代化开源健身教练平台,训练计划与进度追踪
docker·开源·资讯
曲幽19 小时前
FastAPI流式输出实战与避坑指南:让AI像人一样“边想边说”
python·ai·fastapi·web·stream·chat·async·generator·ollama
天朝八阿哥1 天前
使用Docker+vscode搭建离线的go开发调试环境
后端·docker·visual studio code
阿虎儿2 天前
Docker安装(非sudo用户可用)
docker
fetasty3 天前
rustfs加picgo图床搭建
docker
蝎子莱莱爱打怪4 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
曲幽5 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
小p5 天前
docker学习7:docker 容器的通信方式
docker