docker save
?是 Docker 中用于將鏡像打包為 tar 文件的命令,常用于鏡像的備份、遷移或離線傳輸。以下是其核心用法和注意事項:
一、基本語法
bash
docker save [選項] IMAGE [IMAGE...] > 文件名.tar
# 或
docker save -o 文件名.tar IMAGE [IMAGE...]
- IMAGE:鏡像名稱(如?
nginx:latest
)或鏡像 ID。 - 選項:
-o
:指定輸出文件路徑(推薦)。-q
:靜默模式,不顯示進度。
二、常見場景示例
1.?導出單個鏡像
bash
docker save -o nginx.tar nginx:latest
將?nginx:latest
?鏡像保存為?nginx.tar
?文件。
2.?導出多個鏡像
bash
docker save -o my_images.tar nginx:latest alpine:3.14
將多個鏡像打包到同一個 tar 文件中。
3.?通過管道壓縮(節省空間)
bash
docker save nginx:latest | gzip > nginx.tar.gz
使用?gzip
?壓縮鏡像,減少文件體積。
三、鏡像加載與傳輸
1.?加載鏡像(在目標機器上)
bash
docker load -i nginx.tar
# 或通過管道加載壓縮文件
docker load < nginx.tar.gz
2.?跨主機傳輸示例
bash
# 發送方:打包并通過 SSH 傳輸
docker save nginx:latest | ssh user@target-server "docker load"# 接收方:直接加載
scp user@source-server:/path/to/nginx.tar .
docker load -i nginx.tar
四、注意事項
與?
docker export
?的區別docker save
:保存完整鏡像(包括歷史層),用于遷移鏡像。docker export
:導出容器文件系統為 tar,丟失鏡像歷史,適合制作基礎鏡像。
文件大小
- 鏡像可能占用大量磁盤空間,建議使用壓縮(如?
gzip
)或增量備份工具。
- 鏡像可能占用大量磁盤空間,建議使用壓縮(如?
版本兼容性
- 導出的鏡像需在兼容的 Docker 版本上加載(盡量保持版本一致)。
離線環境
- 若目標機器無法聯網,需提前保存所有依賴鏡像(如基礎鏡像、工具鏡像)。
五、實踐建議
- 標簽管理:導出時帶上明確標簽(如?
nginx:1.23.3
),避免加載后標簽丟失。 - 驗證完整性:傳輸后通過?
docker images
?檢查鏡像是否正確加載。 - 腳本自動化:批量導出多個鏡像時,可結合腳本生成鏡像列表:
bash
docker save -o all_images.tar $(docker images -q)
通過?docker save
?和?docker load
,你可以輕松實現鏡像的遷移和備份,確保環境一致性。