我是 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。
提前致谢, 萨米尔
运行这些命令进行清理:
# 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
docker system prune
命令 clean 也会影响网络
https://docs.docker.com/engine/reference/commandline/system_prune/
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
。