Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Jenkins文件上docker图像的if条件_Docker_Jenkins - Fatal编程技术网

检查Jenkins文件上docker图像的if条件

检查Jenkins文件上docker图像的if条件,docker,jenkins,Docker,Jenkins,我对Jenkins声明性管道相当陌生。在Jenkins文件中,我想检查 特定的docker映像是否已在计算机上。如果图像已经是这样,它只需删除旧图像,然后构建新图像,如果不是这样,则只需构建新图像。我如何使用声明性管道实现这一目标 如果您想帮助非常感谢,如果您已经在本地拥有映像,那么构建映像和从注册表中提取映像都非常便宜。如果您正在构建图像,Docker的意思是Docker将扫描Docker文件并快速得出结论,它已经有了最终图像;如果您从注册表中提取,Docker将联系注册表,获取图层列表(小)

我对Jenkins声明性管道相当陌生。在Jenkins文件中,我想检查 特定的docker映像是否已在计算机上。如果图像已经是这样,它只需删除旧图像,然后构建新图像,如果不是这样,则只需构建新图像。我如何使用声明性管道实现这一目标


如果您想帮助

非常感谢,如果您已经在本地拥有映像,那么构建映像和从注册表中提取映像都非常便宜。如果您正在构建图像,Docker的意思是Docker将扫描Docker文件并快速得出结论,它已经有了最终图像;如果您从注册表中提取,Docker将联系注册表,获取图层列表(小),并确定它已经拥有所有图层

这意味着可以无条件地在CI系统中构建/拉取映像。如果没有工作要做,事情很快就会发生


(相反,请注意,一些Docker映像实际上是定期更新的;例如,
ubuntu
基本映像每周到每月都会重新发布更新的安全补丁。因此,始终在CI系统中提取基本映像会带来一些好处,因此您一定会得到这些更新。)

您可以使用
sh删除映像“docker rmi-f”
命令。
要查找ImageID,您可以使用docker的
-qf
选项列出ImageID。
参考示例如下:

stage('Remove old Image') {
            steps {
                script { 
                    def imageName = "<Your image Name>"
                    env.imageName = "${imageName}"
                    def oldImageID = sh( 
                                            script: 'docker images -qf reference=\${imageName}:\${imageTag}',
                                            returnStdout: true
                                        )

                    echo "Image Name: " + "${imageName}"
                    echo "Old Image: ${oldImageID}"

                    if ( "${oldImageID}" != '' ) {
                        echo "Deleting image id: ${oldImageID}..."
                         sh "docker rmi -f ${oldImageID}"
                    } else {
                        echo "No image to delete..."
                        } 
                    }  
                }
            }
stage('Remove old Image'){
台阶{
脚本{
def imageName=“”
env.imageName=“${imageName}”
def oldImageID=sh(
脚本:“docker images-qf reference=\${imageName}:\${imageTag}”,
回答:是的
)
echo“图像名称:”+“${imageName}”
回显“旧图像:${oldImageID}”
如果(“${oldImageID}”!=”){
echo“正在删除图像id:${oldImageID}…”
sh“docker rmi-f${oldImageID}”
}否则{
echo“没有要删除的图像…”
} 
}  
}
}
有关docker图像选项的信息,请访问: