Linux 如何防止docker在发生错误时停止/移除容器
假设我有一个运行docker容器的Jenkins groovy代码,其中将运行一些bash:Linux 如何防止docker在发生错误时停止/移除容器,linux,bash,docker,jenkins-pipeline,jenkins-groovy,Linux,Bash,Docker,Jenkins Pipeline,Jenkins Groovy,假设我有一个运行docker容器的Jenkins groovy代码,其中将运行一些bash: docker.withRegistry(dockerRegistry, dockerCredentials) { docker.image(new String(dockerImage + ":" + dockerVersion)).inside(mountCommand) { try { withEnv(["AWS_PROFILE=${mapp
docker.withRegistry(dockerRegistry, dockerCredentials) {
docker.image(new String(dockerImage + ":" + dockerVersion)).inside(mountCommand) {
try {
withEnv(["AWS_PROFILE=${mappings['stackEnv']}",
"FULL_PACKAGE_VERSION=${mappings['revision']}",
"ARTIFACTORY_USER=${IC_ARTIFACTORY_USER}"]) {
withCredentials([
string(credentialsId: IC_ARTIFACTORY_KEY, variable: 'ARTIFACTORY_KEY')
]) {
sh '''
bash -x Jenkinsfile-e2e-test.sh
'''
}
}
} finally { }
}
}
如果Jenkinsfile-e2e-test.sh因某种原因下降,则Jenkins将自动停止并移除容器:
09:40:08 $ docker stop --time=1 6e78cf6d940cb1ca1cb1c729617fd3e6ba3fa4085c2750908dff8f2a1e7ffeed
09:40:09 $ docker rm -f 6e78cf6d940cb1ca1cb1c729617fd3e6ba3fa4085c2750908dff8f2a1e7ffeed
如何防止Jenkins在发生故障时销毁容器?您可以使用以下方法确保命令不会失败:
bash -x Jenkinsfile-e2e-test.sh || true
或者更好:
bash -x Jenkinsfile-e2e-test.sh > e2e.log 2>&1 & || true
# check the log file and do something based on the log
您可以使用以下方法确保命令不会失败:
bash -x Jenkinsfile-e2e-test.sh || true
或者更好:
bash -x Jenkinsfile-e2e-test.sh > e2e.log 2>&1 & || true
# check the log file and do something based on the log
一旦.inside
命令完成,Jenkins将始终停止并移除容器。无论bash脚本成功还是失败
背后的原因是jenkins负责为您进行内务管理,以防止您最终在构建机器上挂满大量停止的容器
这是Image.withRun
和Image.inside
方法的情况。
如果要控制容器的生命周期,应使用Image.run
:
使用docker run运行映像,并返回一个容器,您可以稍后停止该容器
(from)一旦.inside
命令完成,Jenkins将始终停止并移除容器。无论bash脚本成功还是失败
背后的原因是jenkins负责为您进行内务管理,以防止您最终在构建机器上挂满大量停止的容器
这是Image.withRun
和Image.inside
方法的情况。
如果要控制容器的生命周期,应使用Image.run
:
使用docker run运行映像,并返回一个容器,您可以稍后停止该容器
(from)谢谢,解释得很好谢谢,解释得很好