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$