經過Jenkins按期清除爲None的鏡像

  在代碼持續交付過程當中,依靠Jenkins生產Docker鏡像時,會生成許多的名爲None的中間鏡像,這些鏡像在整個項目生產過程完畢後意義不大,還佔着空間,須要按期清理,經過手動方式實在是繁瑣,也就有了按期清理。 html

  本文地址:http://www.javashuo.com/article/p-rbbrhxyf-eu.html java

 

1、手動方式清理docker

  比較簡便的清理方式,適合有單個none鏡像產生時手動執行命令清理鏡像,執行以下命令:ui

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

  因爲我本地已經沒有了none的鏡像,所以執行就只能看到以下效果   spa

 

2、項目生產結束後清理code

   在Jenkins中創建一個知足CI的項目時,生產過程完畢結束後清理能夠在構建執行腳本內設置,如:htm

  其中的腳本爲:blog

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鏡像清楚,作到本身清除本身的中間產物。get

  可是有一個嚴重問題會產生,當兩個或多個項目在同時構建時,先構建完畢後執行清除的腳本將會影響正在構建過程當中的項目,刪除正在構建過程當中所產生的none,可是刪除失敗進而引起錯誤,致使先構建的項目構建失敗,在多個項目的狀況下不推薦這種方式,若是在Jenkins中只有單個任務在跑,那沒得問題。it

 

3、定時任務清理

   比較喜歡這種方式,新建一個Jenkins定時任務,好比我設置爲晚上十二點清理爲none的鏡像,步驟以下:

  一、Jenkins中新建一個項目,名字隨意,如個人爲ClearImage。

  二、構建觸發器,選擇Build periodically,設置定時時間,如我設置的是凌晨1時清理,也可設置其餘時間,具體設置規則參見右邊問號。

  

 

  三、執行構建腳本,腳本內容在以前已經給出,保存完畢便可,

  

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

  查看控制檯輸出:

  

   輸出完畢:構建有效。

  

  本文地址:http://www.javashuo.com/article/p-rbbrhxyf-eu.html 

 

2018-11-03,望技術有成後能回來看見本身的腳步
相關文章
相關標籤/搜索