2017-09-26 27 views
0

我在使用Docker容器的Jenkins中構建了一個構建管道,但是我想構建一個圖像,但只有當該圖像不存在於與Jenkins相同的服務器上時正在運行。我追求最簡單最優雅的做法,但我正在努力想出任何東西。只有在Jenkins中不存在的情況下構建泊塢窗圖像

+0

你使用任何jenkins碼頭插件或直接shell命令? – yamenk

+0

我正在使用shell命令,但如果這提供了最優雅的處理方式,我很樂意使用插件。 – ChrisAdkin

+0

是否有一個原因,你不想建立圖像,如果它已經存在?除非每次構建圖像​​的內容都會發生變化,否則Docker構建緩存意味着重建現有圖像幾乎是瞬間完成的。 –

回答

0

你可以採取輸出:

docker image ls 

然後用grep你打算建立映像名稱。然而,如果你在詹金斯「建立」一個圖像,那將創建一個「新」圖像 - 即使預先存在的圖像應該是相同的 - 你怎麼知道的?

泊塢窗圖像是模板 - 這聽起來像你正在重建不同主機上的圖像?如果是這樣,請考慮使用中央(私人)註冊表,並從可能需要該映像的各種主機中提取內容。

2

如在question的回答中所述,您可以使用以下方法檢查圖像是否存在。

if [[ "$(docker images -q myimage:mytag 2> /dev/null)" == "" ]]; then 
    # do something 
fi 
+0

謝謝,我的歉意,我應該在問題中說明這一點,我需要一種方法,將在Windows上工作。 – ChrisAdkin

+0

說了這麼多,我可以把你給我的東西和適應它用於PowerShell。 – ChrisAdkin

+0

@ChrisAdkin是的,基本上'docker images'的-q選項在windows上應該是一樣的。 – yamenk