目录
docker compose 和build 的区别是什么?
核心差别:
1. docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly_lbg .
2. docker compose -f docker-compose-gpu.yml up -d
二者如何配合?
总结
docker compose 和build 的区别是什么?
核心差别:
-
docker build
负责 “做镜像”——把Dockerfile
描述的代码和依赖打包成一个镜像文件。 -
docker compose … up
负责 “跑容器”——按docker‑compose.yml
(或你指定的文件)里的编排,把一个或多个镜像启动成后台服务,并自动连网、挂卷、注入环境变量等。
1. docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly_lbg .
组件 | 作用 |
---|---|
docker build | 根据 Dockerfile 把代码/依赖打成一个镜像。 |
--platform linux/amd64 | 在非 x86 机器上(如 Apple Silicon)用 QEMU 模拟构建 x86_64 镜像。 |
-f Dockerfile | 指定 Dockerfile 路径;默认就是 ./Dockerfile ,这里显式写出。 |
-t infiniflow/ragflow:nightly_lbg | 给生成的镜像起名字并打标签(repo:tag)。 |
. | 构建上下文,通常是项目根目录。 |
结果:本地多了一个镜像
infiniflow/ragflow:nightly_lbg
,但它 还没运行。
2. docker compose -f docker-compose-gpu.yml up -d
组件 | 作用 |
---|---|
docker compose | Docker 官方编排工具 (v2)。 |
-f docker-compose-gpu.yml | 指定使用哪份 Compose 文件,里面描述了多服务、挂载、网络、GPU 配置等。 |
up | 创建并启动文件中定义的容器、网络、卷等。 |
-d | detached mode:后台运行,不占当前终端。 |
结果:按照
docker-compose-gpu.yml
里的配置,把所需镜像(可能会自动 pull 或 build)启动成一组互联容器。
二者如何配合?
-
先 build,再 compose(常见流程)
-
docker build … -t myapp:latest .
⟵ 得到最新镜像 -
在
docker-compose.yml
里把服务的image:
写成myapp:latest
-
docker compose up -d
⟵ 运行用这镜像的新容器
-
-
Compose 里直接 build
docker-compose.yml
也可以写build:
指令,docker compose up
时自动帮你执行docker build
,再起容器。
总结
命令 | 关键词 | 主要动作 | 产物 |
---|---|---|---|
docker build … | 镜像制作 | 解析 Dockerfile → 构建层 → 生成镜像 | 镜像 |
docker compose up … | 服务编排 | 拉/建镜像 → 创建容器、网络、卷 → 启动 | 正在运行的容器(集) |
若把它们比作做饭:docker build
像“把食材做成速冻菜包”;docker compose up
像“按照菜单一次性开火、摆盘、上桌,让每道菜在对的灶上同时开煮”。