云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

大带宽_阿里云的用途_精选特惠

小七 141 0

管理Jenkins Docker基础设施:Docker垃圾收集器

使用Docker进行连续交付非常好。它为开发团队带来了令人印象深刻的灵活性,因为他们可以自己管理环境和测试资源,同时,与共享同一主机的其他团队强制执行完全隔离资源。但是在构建基础设施上启用Docker的副作用是磁盘使用,因为拉不同的Docker图像会消耗数百兆字节。Docker images的分层架构确保您可以尽可能多地共享较低级别的层。但是,随着这些层通过各种修复和升级进行更新,以前的层仍保留在磁盘上,并且可能在几个月后导致/var/lib/dockerJenkins监视器中的大量磁盘使用,可以在构建执行器上警告磁盘消耗。但是,应该实现一个更主动的解决方案,而不是简单地让节点离线,直到管理员处理对服务器.Docker它没有提供一个标准的方法来解决图像垃圾收集问题,所以大多数生产团队都创建了自己的工具,包括Spotify的开源dockergcscript.On一个Jenkins基础设施,可以创建一个计划任务来在所有节点上运行这个维护脚本。我这样做是为了我自己的使用(在我不得不处理文件系统完全错误之后)。为了在所有启用docker的节点上运行脚本,我使用了一个工作流作业。工作流使得设置这样的总承包商我使用的脚本依赖于一个"docker"标签,该标签将在docker的所有节点上使用support.Jenkins.instance.getLabel("docker").nodes返回具有此标签的所有生成节点,所以我可以迭代它们并运行workflownode()块,在sh shell脚本中执行docker gc脚本命令:def nodes= Jenkins.instance.getLabel("docker")。节点for(n在节点中){节点(n.nodeName){sh'wget-q-O-https://raw.githubusercontent.com/spotify/docker-gc/master/docker-gc|猛击'  }}docker gc脚本检查容器未使用的图像。当一个映像存在于脚本的最后一次运行时,但没有被容器使用,我希望Docker项目很快会发布一个正式的dockergc命令。这将有助于基础设施团队,无需再为相同的公共设施重新发明定制解决方案问题。尼古拉斯德鲁夫黑客云蜂