一、導出原始鏡像
1. 使用?docker save
?導出完整鏡像
適用場景:保留鏡像的所有層、元數據、標簽和歷史記錄,適合遷移或備份完整鏡像環境。 操作命令
docker save -o <導出文件名.tar> <鏡像名:標簽>
示例:docker save -o milvus_backup.tar milvusdb/milvus:v2.5.6
參數說明:
-o
:指定導出的文件名,如?milvus_backup.tar
。<鏡像名:標簽>
:需導出的鏡像名稱及標簽(如?milvusdb/milvus:v2.5.6
)。
擴展功能:
- 導出多個鏡像:
docker save -o combined.tar image1:tag1 image2:tag2
- 壓縮導出文件:
docker save image:tag | gzip > image.tar.gz
?二、導入鏡像
- 1. 使用?
docker load
?導入完整鏡像
適用場景:導入通過 docker save
導出的完整鏡像文件,保留所有元數據。 操作命令:
docker load -i <導出文件名.tar>
示例:docker load -i milvus_backup.tar
導入后鏡像名稱和標簽與原鏡像一致,若需重命名,需使用?docker tag
?命令:
docker tag <原鏡像ID> <新鏡像名:新標簽>
三、使用?docker import
?導入容器快照
適用場景:若文件是通過 docker export
導出的容器快照(非完整鏡像),需使用此命令導入為鏡像。 操作命令:
docker import <快照文件.tar> <新鏡像名:標簽>
示例:docker import milvus_snapshot.tar milvus_custom:v2.5.6
不保留歷史層和元數據(如環境變量、啟動命令),需手動指定啟動參數 。
可添加元數據:docker import -c "ENV LANG=en_US.UTF-8" snapshot.tar image:tag?
四、關鍵區別與注意事項
1.?docker
save/load
? ?vs?docker
export/import
特性 | docker save/load | docker export/import |
---|---|---|
數據類型 | 完整鏡像(含所有層和元數據) | 容器快照(僅文件系統狀態) |
保留歷史層 | 是 | 否 |
適用場景 | 遷移、備份完整鏡像 | 快速創建鏡像或恢復容器狀態 |
文件生成方式 | docker save | docker export |
?
2. 常見問題排查
-
導入失敗:
- 文件類型不匹配:確認文件是?
docker save
?生成(用?docker load
)還是?docker export
?生成(用?docker import
)?。 - 文件損壞:校驗文件完整性(如?
md5sum
),重新導出或傳輸文件。 - 存儲空間不足:檢查 Docker 存儲路徑?
/var/lib/docker
?的剩余空間,必要時遷移存儲目錄。
- 文件類型不匹配:確認文件是?
-
權限問題:確保當前用戶對導出文件有讀取權限(
chmod +r file.tar
)
四、操作流程圖
導出鏡像 → docker save → 生成.tar文件 → 傳輸到目標環境 → docker load → 導入鏡像 → docker tag重命名導出容器 → docker export → 生成.tar文件 → docker import → 生成新鏡像(需補充元數據)