2017-01-06 41 views
1

泊塢窗緩存尚不可用的特拉維斯:https://github.com/travis-ci/travis-ci/issues/5358泊塢窗緩存特拉維斯建立

我試圖做寫一個解決方法:

`docker save -o file.tar $(docker history -q image_name | grep -v missing)` 
`docker load -i file.tar 

偉大的工程,給我所有的圖像層背部。我現在唯一的問題是保存需要很長時間,而且大多數情況下我實際上正在更改一層,所以我不需要重寫其餘的部分。有沒有辦法告訴docker save命令跳過已在file.tar中的圖層?

回答

2

在tar文件夾中的manifest.json文件中,您可以獲得所需的信息。

tar -xOf file.tar manifest.json

檢查Config鍵的值。前12個字符是圖像ID。您可以使用上面的命令,提取您已有的圖像ID,並將其排除在docker save命令中。

我不是很好用的bash腳本,但這個工程在我的Mac

tar -xOf file.tar manifest.json | tr , '\n' | grep -o '"Config":".*"' | awk -F ':' '{print $2}' | awk '{print substr($0,2,12)}'

使用這種輸出一切

docker history -q IMAGE_HERE | grep -v missing && tar -xOf file.tar manifest.json | tr , '\n' | grep -o '"Config":".*"' | awk -F ':' '{print $2}' | awk '{print substr($0,2,12)}'

這之後,您只需要得到獨特的價值。這可以通過sortuniq -u完成,但由於某種原因,排序不能按預期工作。該命令假定存在file.tar,因此也要考慮這一點。

我找不到在docker save命令中追加任何內容。上述策略可以與多個文件焦點相互配合使用。

+1

太棒了,我不知道清單文件。我接受了答案,但會嘗試製作一個只能渲染差異的腳本。 – yelsayed