1. 程式人生 > >通過Jenkins定期清除為None的映象

通過Jenkins定期清除為None的映象

  在程式碼持續交付過程中,依靠Jenkins生產Docker映象時,會生成許多的名為None的中間映象,這些映象在整個專案生產過程完畢後意義不大,還佔著空間,需要定期清理,通過手動方式實在是繁瑣,也就有了定期清理。 

  本文地址:https://www.cnblogs.com/CKExp/p/9900539.html 

 

一、手動方式清理

  比較簡便的清理方式,適合有單個none映象產生時手動執行命令清理映象,執行如下命令:

docker rmi $(docker images -f "dangling=true" -q)

  由於我本地已經沒有了none的映象,因此執行就只能看到如下效果   

 

二、專案生產結束後清理

   在Jenkins中建立一個滿足CI的專案時,生產過程完畢結束後清理可以在構建執行指令碼內設定,如:

  其中的指令碼為:

echo ---------------Clear-Images...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "no images need  clean up."
else
docker rmi $(docker images -f
"dangling=true" -q) echo "clear success." fi

  當專案構建完畢後,執行這個,將本身構建過程中生成的None映象清楚,做到自己清除自己的中間產物。

  但是有一個嚴重問題會產生,當兩個或多個專案在同時構建時,先構建完畢後執行清除的指令碼將會影響正在構建過程中的專案,刪除正在構建過程中所產生的none,但是刪除失敗進而引發錯誤,導致先構建的專案構建失敗,在多個專案的情況下不推薦這種方式,如果在Jenkins中只有單個任務在跑,那沒得問題。

 

三、定時任務清理

   比較喜歡這種方式,新建一個Jenkins定時任務,比如我設定為晚上十二點清理為none的映象,步驟如下:

  1、Jenkins中新建一個專案,名字隨意,如我的為ClearImage。

  2、構建觸發器,選擇Poll SCM,設定定時時間,如我設定的是凌晨時分清理,也可設定其他時間,具體設定規則參見右邊問號。

  

  3、執行構建指令碼,指令碼內容在之前已經給出,儲存完畢即可,

  

   手動執行立即構建,驗證是否有效:

  檢視控制檯輸出:

  

   輸出完畢:構建有效。

  

  本文地址:https://www.cnblogs.com/CKExp/p/9900539.html 

 

2018-11-03,望技術有成後能回來看見自己的腳步