在Jenkins作业终止后清理孤立的docker容器

时间:2017-11-02 21:08:01

标签: docker jenkins

我在一个在共享的Jenkins群集中运行数百个作业的大型组织工作。

我的Jenkins工作需要针对在Docker容器中运行的不受信任的代码运行集成测试。我担心当我的Jenkins工作突然终止(例如工作中止或超时)时,我将留下孤儿容器。

我已经尝试https://github.com/moby/moby/issues/1905ulimits对我不起作用(这是因为it only works for containers that run bash,我不能保证我会这样做。)

我尝试https://stackoverflow.com/a/26351355/14731--lxc-conf不是Docker for Windows的可识别选项(这需要在docker支持的所有平台上运行)。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

从外观上看,人们正在码头之外处理这个问题。

他们正在添加Jenkins构建后的步骤,以便在中止或失败的构建时清理孤立的docker容器。

以Martin Kenneth的build script为例。

答案 1 :(得分:1)

嗯,你可以在工作的第一步和最后一步中有一个清理命令,例如,先清理旧死人,然后将现有的编译器重命名为old_ $ jobname并将其删除

  • docker container prune -f
  • docker rename $jobname old$jobname
  • docker kill old$jobname做任何你需要的事情

启动新容器 - docker run --name $jobname$