Jenkins工作终止后清理孤儿Docker容器

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

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

我已经尝试https://github.com/moby/moby/issues/1905和ulimits不适合我(这是因为它只适用于容器运行bash ,我不能保证我会这样做)。

我试过https://stackoverflow.com/a/26351355/14731,但是--lxc-conf不是Docker for Windows的公认选项(这需要在--lxc-conf支持的所有平台上运行)。

有任何想法吗?

从外表看,人们正在处理docker工人以外的事情。

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

以Martin Kenneth的构build脚本为例。

那么你可以在你的工作的第一步和最后一步有一个清理命令,例如,首先清理旧的死亡,然后重命名现有的contailer到old_ $ jobname并杀死它

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

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