首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GitLab运行人员的码头清理

GitLab运行人员的码头清理
EN

Stack Overflow用户
提问于 2022-08-01 10:46:38
回答 1查看 516关注 0票数 0

我想自动清理所有未使用的码头资源,以便为下一个ci作业释放更多的磁盘空间。因此,我创建了一个cron作业,每5分钟清理一次未使用的码头资源。我的码头清理脚本是

代码语言:javascript
复制
sudo docker system prune --all --volumes --force

但是,这个cron作业可能会错误地删除图像,这些图像将在以后使用。例如,在停靠器构建时删除中间容器映像并导致错误unknown parent image ID

定期清理似乎不是一个好做法。对我来说,更好的实践是在gitlab运行程序执行ci作业之前/之后执行docker清理脚本。

为了实现这一点,我可以在pre_build_script中设置清理脚本,或者在gitlab运行程序中设置post_build_script。但是,执行构建脚本的ci环境(容器映像)随ci作业的不同而不同。清理脚本可能与每个操作系统不兼容。pre_build_scriptpost_build_script不适合我的情况。

是否有任何方法来检测gitlab runner何时开始运行ci作业?或者有什么更好的解决方案来为每一个ci工作清理未使用的码头资源?

EN

回答 1

Stack Overflow用户

发布于 2022-08-02 09:23:33

作为Runner服务运行码头清理容器

我为每个CI作业运行一个码头清理容器作为CI服务。我的CI服务是在CI作业开始时创建的,并清理未使用的码头资源。问题解决了!

Config.toml

代码语言:javascript
复制
...
[[runners]]
  ...
  [runners.docker]
  ...
    [[runners.docker.services]]
      name = "registry.gitlab.com/example/docker-cleanup:latest"
...

码头工人-清理码头文件

代码语言:javascript
复制
FROM docker:stable

CMD ["docker", "system", "prune", "--volumes", "--all", "--force"]

最好在filter中使用docker system prune,以避免错误删除图像

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73192573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档