专门为新手设计的「容器化部署 + AI 服务落地」完整指南
搞懂 Docker 在干什么 → 会写 Dockerfile → 会用 Docker Compose 编排 → 知道 K8s 在什么时候该用 → 能把 RAG + Agent 跑成一个"像样的服务"
一、先一句话搞懂容器化在干什么
容器化 = 把"代码 + 运行环境"一起打包,在哪都能跑
📌 你不再关心:
- Python 版本
- 依赖冲突
- "我这能跑,你那不行"
二、Docker 是什么?(新手版)
1️⃣ Docker 的三个核心概念(必背)
| 名词 | 一句话 |
|---|---|
| 镜像(Image) | 程序的"安装包" |
| 容器(Container) | 正在运行的程序 |
| Dockerfile | 制作镜像的说明书 |
📌 口诀:
Dockerfile 做镜像,镜像跑容器
2️⃣ Docker 镜像分层原理(非常重要)
📌 一句话
Docker 镜像是"一层一层叠起来"的
🌰 类比(强烈推荐)
做一个汉堡:
text
面包底
+ 牛肉
+ 生菜
+ 酱
Docker 镜像:
text
基础系统层
+ Python 层
+ 依赖层
+ 你的代码层
📌 分层有什么好处?
1️⃣ 复用
- Python 层不用每次重新下载
2️⃣ 构建快
- 改代码只重新构建"代码层"
3️⃣ 省空间
📌 记忆口诀:
没变的层不重建
三、Docker 镜像怎么写?(最小可用)
1️⃣ 一个 AI 服务常见 Dockerfile
dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]
📌 新手只要理解:
FROM:基础环境RUN:装依赖COPY:拷代码CMD:启动程序
四、Docker Compose 是干什么的?
📌 一句话
Docker Compose = 一次启动多个 Docker 服务
🌰 类比
你要启动:
- RAG 服务
- Agent 服务
- 向量数据库
- Redis
不用一个个 docker run
👉 Compose 帮你一起管
Compose 的三大好处
1️⃣ 一个 docker-compose up
2️⃣ 自动建网络
3️⃣ 服务之间用名字通信
📌 口诀:
一个文件,起一堆服务
五、RAG + Agent 服务的整体架构(新手版)
text
用户
↓
Agent API
↓
RAG 服务
↓
向量数据库(Chroma / FAISS)
↓
大模型 API
六、用 Docker Compose 部署 RAG + Agent(完整示例)
🎯 目标
一条命令,启动一个 AI 系统
1️⃣ 项目结构(推荐)
text
project/
├─ agent/
│ ├─ main.py
│ └─ Dockerfile
├─ rag/
│ ├─ main.py
│ └─ Dockerfile
├─ data/
├─ docker-compose.yml
2️⃣ agent/Dockerfile
dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY . .
RUN pip install langchain openai
CMD ["python", "main.py"]
3️⃣ rag/Dockerfile
dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY . .
RUN pip install langchain chromadb sentence-transformers
CMD ["python", "main.py"]
4️⃣ docker-compose.yml(核心)
yaml
version: "3.8"
services:
agent:
build: ./agent
ports:
- "8000:8000"
depends_on:
- rag
rag:
build: ./rag
volumes:
- ./data:/data
📌 你现在可以:
bash
docker-compose up --build
👉 一个完整 AI 系统启动了
七、什么是"水平扩容"?(非常重要)
📌 一句话
水平扩容 = 多开几份同样的服务,一起干活
🌰 类比
一个客服太忙了?
👉 再来 3 个客服
Docker Compose 怎么扩容?
bash
docker-compose up --scale agent=3
📌 现在你有:
- agent_1
- agent_2
- agent_3
⚠️ 注意
- 需要 负载均衡器(如 Nginx)
- 服务必须 无状态
八、Kubernetes(K8s)到底是干嘛的?
📌 一句话
K8s = 自动管理"成百上千个容器"的系统
Docker Compose vs K8s(新手理解版)
| 对比 | Compose | K8s |
|---|---|---|
| 学习成本 | 低 | 高 |
| 本地开发 | ✅ | ❌ |
| 自动扩缩容 | ❌ | ✅ |
| 生产环境 | 一般 | 标准 |
📌 新手建议:
先 Compose,后 K8s
K8s 里和你现在最相关的 3 个概念
| 概念 | 类比 |
|---|---|
| Pod | 一个容器组 |
| Deployment | 管理副本 |
| Service | 负载均衡 |
九、大模型服务如何做"真正的水平扩容"?
📌 核心前提(非常重要)
服务必须是"无状态"的
❌ 不要:
- 把对话存在内存
- 把用户状态写死
✅ 要:
- 状态放 Redis
- 向量放数据库
标准架构
text
负载均衡
↓
Agent 容器 × N
↓
Redis / 向量数据库
十、新手最容易踩的坑
❌ Dockerfile 把所有东西写一层
❌ Compose 里硬编码 IP
❌ 服务有状态还想扩容
❌ 一开始就上 K8s
十一、终极新手记忆口诀(强烈建议背)
Docker 管环境,
Compose 管服务,
扩容靠无状态,
K8s 管规模。
十二、推荐学习顺序(实用)
1️⃣ 会写 Dockerfile
2️⃣ 会用 docker-compose
3️⃣ 把 RAG 跑成服务
4️⃣ Agent 无状态化
5️⃣ 再学 K8s
十三、参考文档
Docker 官方文档
B 站 "K8s 快速入门"
有任何问题欢迎在评论区交流。