2017-09-26 55 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