docker - 无法通过 Jenkins 管道删除 docker 映像
问题描述
我想从以前的版本中删除图像。我能够获得它的图像 ID,但是每次点击docker rmi
命令时工作都会死掉。
stage('Clean old Image') {
steps {
script {
def imageName = "${registry}" + "/" + "${branchName}"
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..."
}
}
}
}
阶段日志控制台显示这些错误消息
Shell Script -- docker rmi -f $oldImageID (self time 282ms) + docker rmi -f "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] Remove one or more images
但实际上,图像 id 已经存在,因为它在阶段日志中显示
Print Message -- Old Image: 267848fadb74 (self time 11ms) Old Image: 267848fadb74
解决方案
尝试传入"
而不是'
with${oldImageID}
sh "docker rmi -f ${oldImageID}"
推荐阅读
- python - 检查目标时出错:预期 x3 有 2 个维度,但得到了形状为 (30, 1, 4) 的数组
- build - 为什么要使用`config.status --recheck`?– 因为它不会*保存*任何东西
- c - C: 处理案例...else
- r - 所有可能的变量组合的总结
- node.js - 错误 R10(启动超时)-> 尝试启动应用程序时,Web 进程未能在启动错误的 60 秒内绑定到 $PORT
- python - 初始化 TypedDict 并稍后填充键和值
- vba - 清除范围的格式,而不是选择
- c# - InvalidOperationException:无法为“CoronaAppCsarp.Pages.Index”类型的属性“_clientFactory”提供值
- google-cloud-platform - 云发布订阅消息排序是否意味着在确认前一条消息之前不会传递后续消息?
- nodemailer - Nodemailer - 超过了 24 小时的发送限制