目錄
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
像“按照菜單一次性開火、擺盤、上桌,讓每道菜在對的灶上同時開煮”。