需求:現在碰到一個需求,需要定期輪休某個目錄,將其中的.tar檔使用docker load指令載入鏡像
問題1:顯然.tar檔案要是使用 docker save 映像名:版本 > abc.tar 這種形式打包出來的,才能被成功load回去。那麼該如何檢測.tar檔案是否格式正確,且鏡像內容完整。這樣就能夠將那些非docker save出來的檔案刪除。
問題2:目錄是需要使用者上傳.tar檔案的。考慮到一些鏡像save出來的.tar檔案很大,那麼上傳的時間會比較多,如何判斷某個.tar檔案正是正在上傳的,這樣就不會將它刪掉了。
不知道我表達清楚沒有,各位大俠有什麼好方法。
高洛峰2017-04-25 09:05:12
docker save
導出的文件,其實就是一個普通的壓縮文件,這個壓縮文件中包含了鏡像的所有鏡像層,以及包含鏡像基本信息的Manifest文件。在Manifest檔案中,包含了所有鏡像圖層的雜湊值,可以透過這些特徵值來檢查鏡像層檔案是否完整且正確。你完全可以透過檢查Manifest檔案內容以及所有鏡像層檔案來確定鏡像的匯出資料是否正確。
大家讲道理2017-04-25 09:05:12
不清楚, 官方文件也沒提到校驗的問題 (參考 @有明 的答案)
有很多方法來確保, 例如說上傳的實際目錄和你工作的目錄分開(上傳到/upload, 完成後再移動到/publish, 你刪除只會刪/publish下面的), 或者在上傳文件之後帶上一個.md5sum校驗文件, 如果.md5sum校驗文件不存在說明文件還沒傳完