摘要
想在本地拥有一套完全属于自己的 AI 编程助手,无需联网、无惧数据隐私问题?本文手把手带你从零开始在 Ubuntu 20.04 上搭建基于 Docker 的 Ollama 运行环境,并部署 DeepSeek-Coder-V2 模型。内容涵盖 Docker 安装、国内镜像加速配置、Ollama 容器化部署、模型数据持久化、Python 调用环境(LangChain + Chroma),以及通过 SSH 连接 Gitee 仓库的完整流程。
适用人群 / 前置知识
适用人群 :希望在本地运行大语言模型的开发者、AI 爱好者、关注数据隐私的技术人员。
前置知识:熟悉 Linux 终端基本命令(cd, ls, sudo 等);了解 Docker 的基本概念(镜像、容器、卷);知道什么是 SSH 密钥以及 GitHub / Gitee 的基本使用
引言
随着大语言模型的快速发展,像 DeepSeek-Coder 这样的代码模型已经能在普通消费级硬件上运行。但很多教程依赖直接安装 Ollama 到宿主机,可能导致环境冲突、升级困难。使用 Docker 部署则能完美隔离环境,并借助数据卷实现模型持久化。本文记录了一套经过验证的完整流程,帮你避开国内网络、权限配置等常见"坑"。
一、在 Ubuntu 20.04 上安装 Docker
如果你的系统尚未安装 Docker,请按以下步骤操作。已安装的读者可跳过本节。
1. 更新系统包索引
python
sudo apt update
2. 安装必要依赖
Docker 官方仓库需要 apt-transport-https、ca-certificates 和 curl 等工具:
python
sudo apt install apt-transport-https ca-certificates curl software-properties-common
3. 添加 Docker 官方 GPG 密钥
python
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4. 添加 Docker APT 仓库
python
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 安装 Docker 引擎及相关组件
python
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
6. 启动并验证 Docker
python
sudo systemctl start docker
sudo systemctl enable docker
docker --version
运行测试容器:
python
sudo docker run hello-world
若输出欢迎信息,说明安装成功。
💡 小提示:每次使用 docker 命令都加 sudo 比较繁琐。可以将当前用户加入 docker 组:
python
sudo usermod -aG docker $USER
之后重新登录终端即可免 sudo 运行 Docker 命令。
二、配置 Docker 国内镜像加速器(必看)
在国内拉取 Docker Hub 镜像时,极易遇到 context deadline exceeded 超时错误。这是因为官方仓库访问不稳定。解决方法是配置多个国内镜像加速器。
1. 创建/编辑 Docker 配置文件
python
sudo mkdir -p /etc/docker
2. 写入加速器地址
这里提供了三组经过验证的可用地址,多源配置能避免单点故障:
python
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}
EOF
3. 重启 Docker 服务
python
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 验证配置
python
docker info | grep -A 2 "Registry Mirrors"
如果能看到你配置的地址列表,表示加速器已生效。
📌 延伸见解:配置镜像加速器是"一劳永逸"的优化。即使你只是偶尔拉取镜像,也强烈建议完成这一步。另外,部分企业内网可能还有自己的私有镜像仓库,配置方法类似。
三、在 Docker 中运行 Ollama
1. 拉取官方 Ollama 镜像
python
docker pull ollama/ollama
如果加速器配置正确,拉取过程应该稳定快速。
2. 解决 Docker 权限问题(可选)
若你在拉取或运行容器时遇到类似以下错误:
python
permission denied while trying to connect to the Docker daemon socket
说明当前用户不在 docker 组中。两种解决办法:
临时方案:所有 docker 命令前加 sudo
永久方案:执行 sudo usermod -aG docker $USER 并重新登录
3. 运行 Ollama 容器(带数据卷映射)
python
docker run -d \
--name ollama.docker \
-p 11434:11434 \
-v ollama:/root/.ollama \
ollama/ollama
参数解释:
- -d:后台运行容器
- --name ollama.docker:指定容器名称(方便后续管理)
- -p 11434:11434:将容器的 11434 端口映射到宿主机同一端口
- -v ollama:/root/.ollama:创建 Docker 数据卷 ollama,挂载到模型存储目录
为什么数据卷映射如此重要?
- ❌ 没有映射:容器删除后,所有下载的模型(如 DeepSeek-Coder)都会丢失,下次需要重新下载(几个 GB 甚至几十 GB)。
- ✅ 有了映射:即使容器被删除或升级,模型文件依然保存在数据卷中。重新启动新容器时,只需挂载同一个卷,模型即刻可用。
4. 验证容器运行状态
python
docker ps | grep ollama.docker
四、下载并运行 DeepSeek-Coder 模型
本文以 DeepSeek-Coder-V2 16B 模型为例(标准量化版约 8.9GB,对硬件相对友好)。
1. 拉取模型
python
docker exec ollama.docker ollama pull deepseek-coder-v2:16b
docker exec 允许我们在运行中的容器内执行命令。ollama pull 会下载模型到数据卷映射的路径中。
2. 运行模型(后台)
python
docker exec -d ollama.docker ollama run deepseek-coder-v2:16b
3. 测试模型:用 Python 写一个快速排序
python
docker exec ollama.docker ollama run deepseek-coder-v2:16b "用Python写一个快速排序算法"
如果一切正常,你会看到模型生成的代码输出。至此,一个本地的 AI 代码助手已就绪。
💡 常见问题:模型下载中途失败怎么办?
可以使用 docker logs ollama.docker 查看容器日志。如果是网络问题,检查镜像加速器配置;如果是磁盘空间不足,请清理硬盘或更换模型(如尝试更小的 deepseek-coder-v2:6.7b)。
五、搭建 Python 调用环境
有了 Ollama 服务,我们还需要一个 Python 环境来开发应用(例如结合 LangChain 实现 RAG 或构建 API)。
1. 使用 Conda 创建虚拟环境
python
conda create -n ollama python=3.10 -y
conda activate ollama
2. 安装必要的依赖包
python
pip install langchain langchain-ollama langchain-chroma chromadb pypdf
- langchain-ollama:LangChain 官方 Ollama 集成
- chromadb:轻量级向量数据库,用于存储文档嵌入
- pypdf:处理 PDF 文件(可用于构建本地知识库)
3. 验证 Ollama 连接(Python 示例)
创建一个测试脚本 test_ollama.py:
python
from langchain_ollama import OllamaLLM
llm = OllamaLLM(model="deepseek-coder-v2:16b", base_url="http://localhost:11434")
response = llm.invoke("解释一下 Docker 数据卷的作用")
print(response)
运行 python test_ollama.py,若输出正常,则 Python 环境与 Ollama 容器已打通。
六、配置 Git 与 Gitee SSH 连接(代码管理)
为了管理你的 AI 项目代码,建议使用 Git 并连接 Gitee 仓库。SSH 方式比 HTTPS 更安全且无需重复输入密码。
1. 安装 Git
python
sudo apt update
sudo apt install git -y
git --version
2. 配置用户信息
python
git config --global user.name "你的Gitee用户名"
git config --global user.email "你的Gitee注册邮箱"
3. 生成 SSH 密钥对(ed25519 算法)
python
ssh-keygen -t ed25519 -C "你的Gitee注册邮箱"
按三次回车(不设密码短语也可)。密钥默认保存在 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。
4. 添加公钥到 Gitee
- 查看并复制公钥:cat ~/.ssh/id_ed25519.pub
- 登录 Gitee → 右上角头像 → 设置 → 安全设置 → SSH公钥 → 添加公钥
- 粘贴公钥内容,标题任意(如 My-Ubuntu),点击确定。
5. 验证 SSH 连接
python
ssh -T git@gitee.com
成功会显示:Hi 用户名! You've successfully authenticated...
6. 克隆或推送仓库(使用 SSH 地址)
在 Gitee 仓库页面,点击 克隆/下载 → 选择 SSH 标签,复制地址(格式 git@gitee.com:用户名/仓库名.git)。
如果你已有 HTTPS 远程地址,可以修改为 SSH:
python
git remote set-url origin git@gitee.com:用户名/仓库名.git
git push -u origin master
⚠️ 注意:Gitee 现已不再支持 HTTPS 密码登录(需使用私人令牌),强烈建议统一使用 SSH 方式。
七、常见问题与注意事项
- docker pull 超时:配置镜像加速器(见第二节)
- 权限不足(socket 错误):将用户加入 docker 组或使用 sudo
- 容器删除后模型丢失:启动容器时务必使用 -v ollama:/root/.ollama 数据卷映射
- 模型下载太慢:检查网络
- SSH 连接 Gitee 失败:确认公钥已添加,且仓库地址为 SSH 格式
- conda 命令未找到:需先安装 Anaconda/Miniconda,或使用 Python 自带的 venv
总结
通过本文的完整流程,你已经成功在 Ubuntu 20.04 上搭建了一个基于 Docker 的本地 AI 编程环境:
✅ Docker 安装与国内镜像加速
✅ Ollama 容器化运行,模型数据持久化
✅ 下载并运行 DeepSeek-Coder 模型
✅ Python 调用环境(LangChain + Chroma)
✅ Git 与 Gitee SSH 连接
这个环境不仅可以用作代码生成助手,还可以进一步扩展为本地知识库问答、代码审查工具等。所有数据都在你的机器上,安全可控。如果你使用的是 NVIDIA GPU,还可以尝试添加 --gpus all 参数启用 GPU 加速,让模型推理飞起来。
下一步建议:尝试用 LangChain 构建一个简单的 RAG 应用,让 Ollama 根据你本地的 PDF 文档回答问题。享受本地 AI 带来的乐趣吧!
参考链接: