我在一个在共享的Jenkins群集中运行数百个作业的大型组织工作。
我的Jenkins工作需要针对在Docker容器中运行的不受信任的代码运行集成测试。我担心当我的Jenkins工作突然终止(例如工作中止或超时)时,我将留下孤儿容器。
我已经尝试https://github.com/moby/moby/issues/1905而ulimits
对我不起作用(这是因为it only works for containers that run bash
,我不能保证我会这样做。)
我尝试https://stackoverflow.com/a/26351355/14731但--lxc-conf
不是Docker for Windows的可识别选项(这需要在docker支持的所有平台上运行)。
有什么想法吗?
答案 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$