gitlab-runner 的 Docker 卷清理

问题描述 投票:0回答:3

我是 docker 和 jenkins 的新手。然而最终我在 jenkins 中创建了一个作业,以便我可以删除存储在我们的 Linux 机器(CentOS7)中的 gitlab-runner 的卷缓存

为了实现这一目标,我在 jenkins 中使用以下命令每 6 小时创建一个定期作业:

docker volume prune -f 

但是它根本没有清理空间。这是詹金斯作业的输出:

Started by timer
Running as SYSTEM
Building remotely on buildbng17 (gitlab) in workspace /mnt/data0/jenkins/workspace/gitlab-cleanup
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Deferred wipeout is used...
[WS-CLEANUP] Done
[gitlab-cleanup] $ /bin/sh -xe /tmp/jenkins3799570002967825583.sh
+ find /mnt/data0/gitlab/data/backups/ -name '*.tgz' -mtime +30
/mnt/data0/gitlab/data/backups/etc-gitlab-1611415968.tgz
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: SUCCESS

当我去我的 buildbng17 机器并检查是否有任何卷时,所以有一些卷我必须通过执行来清理

docker volume prune

唯一的缺点是我需要手动完成并在要求确认时给出“y”。数据变得干净。

我应该在 jenkins 中发出什么命令,以便它自动清理卷而不要求确认? (因为 dockervolume prune -f 不起作用)

我什至尝试在我的linux机器上手动运行dockervolume prune -f命令,它仍然没有清理卷并显示释放了0kb(但是我从dockervolumels检查了卷)

我们有没有更好的方法可以在 gitlab-runner 内部实现自动化? 或者我不知道的 jenkins 或 docker 的一些更好的功能?

gitlab-runner 继续运行并覆盖磁盘空间。

还有一件事:我们在 docker 上使用 Gitlab 和 Gitlab-runner。

提前致谢, 萨米尔

docker jenkins gitlab gitlab-ci gitlab-ci-runner
3个回答
44
投票

运行这些命令进行清理:

# Remove exited containers
docker ps -a -q -f status=exited | xargs --no-run-if-empty docker rm -v

# Remove dangling images
docker images -f "dangling=true" -q | xargs --no-run-if-empty docker rmi

# Remove unused images
docker images | awk '/ago/  { print $3}' | xargs --no-run-if-empty docker rmi

# Remove dangling volumes
docker volume ls -qf dangling=true | xargs --no-run-if-empty docker volume rm

1
投票

docker system prune
命令 clean 也会影响网络

https://docs.docker.com/engine/reference/commandline/system_prune/


0
投票

GitLab Runner 有一个

clear-docker-cache
脚本。建议通过 cron 每周运行一次。

使用以下内容创建

/etc/cron.weekly/clear-docker-cache

#!/bin/sh
/usr/share/gitlab-runner/clear-docker-cache

运行

/usr/share/gitlab-runner/clear-docker-cache
将默认运行
clear-docker-cache prune-volumes
,基本上运行
docker system prune --volumes -af

如果您不想修剪卷,请使用

/usr/share/gitlab-runner/clear-docker-cache prune

如果要添加过滤器,请添加

--filter
参数,例如
--filter "until=24h"
以在过去 24 小时之前进行修剪。

如果您只想查看可以回收哪些空间,请运行

/usr/share/gitlab-runner/clear-docker-cache space

© www.soinside.com 2019 - 2024. All rights reserved.