在这里插入图片描述

最近本地大模型越来越好用,如果你不想在系统里安装一堆运行环境,使用 Docker 部署 Ollama 是一个非常省心的方案。

Ollama 本身提供了官方 Docker 镜像,我们只需要启动一个容器,就可以在本地运行 DeepSeek、Qwen、Llama 等各种开源模型。

这篇文章就从零开始介绍:

  • 使用 Docker 安装 Ollama
  • 使用 Docker Compose 管理 Ollama
  • 下载并运行 DeepSeek-R1 1.5B
  • 调用 Ollama API
  • Docker 数据持久化
  • NVIDIA GPU 加速
  • macOS Apple Silicon 需要注意的问题

最终我们会得到这样一个结构:

Docker
  │
  └── Ollama
        │
        ├── HTTP API :11434
        │
        └── DeepSeek-R1 1.5B

一、为什么使用 Docker 安装 Ollama?

Ollama 本身安装已经很简单了,但是如果是在服务器、开发环境或者需要重复部署,我还是比较推荐 Docker。

主要有几个优点:

环境隔离
    ↓
安装方便
    ↓
迁移方便
    ↓
升级方便
    ↓
数据可以持久化

例如以后迁移服务器,基本只需要:

docker compose up -d

整个 Ollama 服务就可以重新启动。

Ollama 官方本身也提供了:

ollama/ollama

Docker 镜像。官方目前给出的 CPU 运行方式同样是通过挂载 /root/.ollama 并暴露 11434 端口。


二、准备 Docker

首先确认电脑已经安装 Docker。

执行:

docker --version

例如:

Docker version 28.x.x

然后检查 Docker Compose:

docker compose version

注意,现在比较推荐:

docker compose

而不是以前的:

docker-compose

如果两个命令都能够正常执行,就可以继续了。


三、使用 Docker 安装 Ollama

最简单的方法只有一条命令:

docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v ollama:/root/.ollama \
  --restart unless-stopped \
  ollama/ollama

这里几个参数分别代表:

参数 作用
-d 后台运行
--name ollama 容器名称
-p 11434:11434 映射 Ollama API 端口
-v ollama:/root/.ollama 持久化模型
--restart unless-stopped Docker 重启后自动启动
ollama/ollama Ollama 官方镜像

其中最重要的是:

-v ollama:/root/.ollama

因为我们后面下载的大模型都会保存到:

/root/.ollama

如果不做持久化,删除容器以后模型数据也可能一起丢失。


四、检查 Ollama 是否启动成功

执行:

docker ps

应该可以看到:

CONTAINER ID   IMAGE           PORTS
xxxxxxxx       ollama/ollama   0.0.0.0:11434->11434/tcp

也可以直接访问 Ollama:

curl http://localhost:11434

如果返回类似:

Ollama is running

说明安装成功。


五、下载 DeepSeek-R1 1.5B

接下来我们安装一个非常小的 DeepSeek 模型:

DeepSeek-R1-Distill-Qwen-1.5B

在 Ollama 中对应:

deepseek-r1:1.5b

Ollama 官方模型库目前仍然提供这个模型,运行命令就是:

ollama run deepseek-r1:1.5b

官方提供的 Q4_K_M 版本模型文件大约只有 1.1 GB,实际参数量约 1.78B,非常适合作为 Ollama 入门测试模型。

因为 Ollama 现在运行在 Docker 里面,所以执行:

docker exec -it ollama ollama pull deepseek-r1:1.5b

开始下载。

下载完成以后,可以查看本地模型:

docker exec -it ollama ollama list

你应该可以看到类似:

NAME                  ID              SIZE
deepseek-r1:1.5b      xxxxxxxxxxxx    1.1 GB

六、运行 DeepSeek-R1 1.5B

直接执行:

docker exec -it ollama ollama run deepseek-r1:1.5b

然后输入:

你好,请介绍一下你自己。

DeepSeek 就会开始回答。

例如:

>>> 你好,请介绍一下你自己。

退出可以输入:

/bye

这样,我们实际上已经完成了:

Docker
   ↓
Ollama
   ↓
DeepSeek-R1 1.5B
   ↓
本地 AI

整个过程不需要配置 Python,也不需要安装 PyTorch、CUDA SDK 或者其他大模型运行框架。


七、使用 Docker Compose 安装 Ollama

如果只是测试,一条 docker run 命令就够了。

但如果准备长期使用,我更加推荐 Docker Compose。

新建目录:

mkdir ollama
cd ollama

创建:

compose.yml

写入:

services:

  ollama:
    image: ollama/ollama:latest
    container_name: ollama

    ports:
      - "11434:11434"

    volumes:
      - ollama_data:/root/.ollama

    restart: unless-stopped

volumes:
  ollama_data:

目录结构:

ollama/
└── compose.yml

然后启动:

docker compose up -d

查看运行状态:

docker compose ps

查看日志:

docker compose logs -f ollama

八、Docker Compose 下载 DeepSeek-R1

Ollama 启动以后执行:

docker compose exec ollama ollama pull deepseek-r1:1.5b

查看模型:

docker compose exec ollama ollama list

运行模型:

docker compose exec ollama ollama run deepseek-r1:1.5b

这样我们的 Ollama 环境就基本完成了。


九、让 Docker Compose 自动下载 DeepSeek

如果希望第一次启动的时候就自动准备 DeepSeek,还可以增加一个初始化容器。

例如:

services:

  ollama:
    image: ollama/ollama:latest
    container_name: ollama

    ports:
      - "11434:11434"

    volumes:
      - ollama_data:/root/.ollama

    restart: unless-stopped

    healthcheck:
      test: ["CMD", "ollama", "list"]
      interval: 10s
      timeout: 5s
      retries: 10


  ollama-pull:
    image: ollama/ollama:latest

    depends_on:
      ollama:
        condition: service_healthy

    environment:
      OLLAMA_HOST: http://ollama:11434

    entrypoint: /bin/sh

    command:
      - -c
      - |
        ollama pull deepseek-r1:1.5b

    restart: "no"


volumes:

  ollama_data:

然后:

docker compose up -d

第一次启动时:

启动 Ollama
      ↓
等待 Ollama Ready
      ↓
ollama-pull
      ↓
自动下载 deepseek-r1:1.5b

这样比较适合服务器初始化或者自动化部署。


十、通过 HTTP API 调用 DeepSeek

Ollama 最大的价值之一,其实不是命令行聊天,而是它提供了 API。

默认地址:

http://localhost:11434

例如:

curl http://localhost:11434/api/chat \
  -d '{
    "model": "deepseek-r1:1.5b",
    "messages": [
      {
        "role": "user",
        "content": "用简单的话解释一下什么是 Docker"
      }
    ],
    "stream": false
  }'

模型就会返回结果。

Ollama 官方模型页面本身也提供 /api/chat 的调用示例。


十一、使用 generate API

也可以使用:

/api/generate

例如:

curl http://localhost:11434/api/generate \
  -d '{
    "model": "deepseek-r1:1.5b",
    "prompt": "为什么天空是蓝色的?",
    "stream": false
  }'

返回大概类似:

{
  "model": "deepseek-r1:1.5b",
  "response": "天空呈现蓝色主要与瑞利散射有关……",
  "done": true
}

这意味着你完全可以把 Ollama 当成一个本地 AI API Server。


十二、其他程序如何调用 Ollama?

现在整个架构其实就是:

                     ┌─────────────────┐
                     │ DeepSeek R1     │
                     │ 1.5B            │
                     └────────▲────────┘
                              │
                     ┌────────┴────────┐
                     │     Ollama      │
                     │     Docker      │
                     └────────▲────────┘
                              │
                           :11434
                              │
           ┌──────────────────┼──────────────────┐
           │                  │                  │
       Python              Node.js           Java/Go
           │                  │                  │
           └──────────────────┴──────────────────┘

所以后面无论是:

  • Python
  • Java
  • Go
  • Node.js
  • AI Agent
  • VS Code 插件
  • Web 项目

都可以连接这个 Ollama 服务。


十三、建议只监听本机端口

如果 Ollama 只准备自己电脑使用,我建议把:

ports:
  - "11434:11434"

改成:

ports:
  - "127.0.0.1:11434:11434"

Docker Compose:

services:

  ollama:
    image: ollama/ollama:latest
    container_name: ollama

    ports:
      - "127.0.0.1:11434:11434"

    volumes:
      - ollama_data:/root/.ollama

    restart: unless-stopped

volumes:

  ollama_data:

这样 Ollama 只允许:

localhost

访问。

如果直接写:

11434:11434

Docker 默认可能会把端口发布到主机网络接口。

对于服务器环境尤其要注意,不建议毫无保护地把 Ollama API 直接暴露到公网。


十四、NVIDIA GPU 加速

如果是在 Linux + NVIDIA 显卡环境,可以让 Docker 中的 Ollama 使用 GPU。

首先需要安装:

NVIDIA Container Toolkit

然后配置 Docker Runtime。

官方给出的 NVIDIA 启动方式为:

docker run -d \
  --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama

Docker Compose 可以写成:

services:

  ollama:
    image: ollama/ollama:latest
    container_name: ollama

    ports:
      - "11434:11434"

    volumes:
      - ollama_data:/root/.ollama

    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities:
                - gpu

    restart: unless-stopped

volumes:

  ollama_data:

启动:

docker compose up -d

然后可以检查模型到底运行在 CPU 还是 GPU:

docker exec -it ollama ollama ps

例如:

NAME                 PROCESSOR
deepseek-r1:1.5b     100% GPU

Ollama 官方文档说明,ollama psPROCESSOR 列可以判断模型是运行在 CPU、GPU,还是两者混合运行。


十五、Mac 用户特别注意

这里有一个非常容易踩的坑。

如果你使用的是:

MacBook
Mac mini
Mac Studio
Apple M1 / M2 / M3 / M4

虽然 Ollama 原生运行可以使用 Apple GPU,但是:

Docker Desktop for macOS 中运行 Ollama,目前不能直接使用 Apple GPU。

原因是 Docker Desktop 没有把 Apple GPU 直接透传给 Ollama Linux 容器。

官方 FAQ 明确说明,Docker Desktop on macOS 的 Ollama GPU acceleration 不可用;而 Ollama 原生 macOS 版本可以在 Apple Silicon 上使用 CPU 和 GPU。

所以如果你使用 Mac:

学 Docker 部署

可以使用:

Docker + Ollama

但是主要是 CPU 推理。

真正本地长期跑模型

更加推荐:

macOS
  ↓
原生 Ollama
  ↓
Metal
  ↓
Apple GPU

也就是说:

Mac 上为了性能,优先考虑原生 Ollama;服务器上为了部署方便,Docker Ollama 非常合适。

这个区别一定要搞清楚。


十六、常用 Docker Ollama 命令

最后整理几个经常会用到的命令。

查看容器

docker ps

查看日志

docker logs -f ollama

查看模型

docker exec -it ollama ollama list

下载模型

docker exec -it ollama ollama pull deepseek-r1:1.5b

运行模型

docker exec -it ollama ollama run deepseek-r1:1.5b

查看运行中的模型

docker exec -it ollama ollama ps

删除模型

docker exec -it ollama ollama rm deepseek-r1:1.5b

停止 Ollama

docker stop ollama

启动 Ollama

docker start ollama

Docker Compose 停止

docker compose down

Docker Compose 更新 Ollama

docker compose pull
docker compose up -d

模型存储在 Docker Volume 中,因此正常重新创建 Ollama 容器并不会要求重新下载所有模型。


十七、最终推荐的 compose.yml

如果只是想快速搭一个自己的本地 Ollama,我建议直接保存下面这个版本:

services:

  ollama:
    image: ollama/ollama:latest
    container_name: ollama

    ports:
      - "127.0.0.1:11434:11434"

    volumes:
      - ollama_data:/root/.ollama

    restart: unless-stopped


volumes:

  ollama_data:

然后:

docker compose up -d

下载 DeepSeek:

docker compose exec ollama ollama pull deepseek-r1:1.5b

运行:

docker compose exec ollama ollama run deepseek-r1:1.5b

到这里,一个完全运行在自己机器上的 DeepSeek 就搭建完成了。


总结

Ollama 把本地运行大语言模型这件事情做得非常简单,而 Docker 又进一步解决了环境部署、迁移和管理的问题。

整个安装过程其实可以浓缩成三步:

docker compose up -d

然后:

docker compose exec ollama ollama pull deepseek-r1:1.5b

最后:

docker compose exec ollama ollama run deepseek-r1:1.5b

我们就拥有了:

Docker
+
Ollama
+
DeepSeek-R1 1.5B
+
localhost:11434 API

而且整个模型运行在自己的设备上。

对于第一次接触 Ollama 的人来说,deepseek-r1:1.5b 是一个非常合适的入门模型:模型文件大约 1.1GB,部署成本低,可以先把 Docker、Ollama、本地模型和 API 调用这一整套流程跑通,再逐渐尝试 7B、8B、14B、32B 等更大的模型。

如果你的目标不是单纯聊天,而是继续往 AI Agent、本地知识库、IDE 编程助手或者自己的 AI API 服务发展,那么这个 Docker Ollama 环境也可以直接作为后续所有实验的基础设施。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐