GitLab Runner缓存卷权限设置失败,流水线运行异常求助
问题描述
我在Ubuntu 20.04.5 LTS虚拟机中部署了15.5.1版本的GitLab Runner,Docker版本为22.06.0-beta.0。尝试运行使用node:latest镜像的流水线时,出现如下错误:
ERROR: Preparation failed: adding cache volume: set volume permissions: running permission container
Runner的config.toml配置如下:
[[runners]] name = "runner-web" url = "my url here" id = 8 token = "Q_9sEzj9y2sPPJTLnGpL" token_obtained_at = 2022-12-01T14:09:45Z token_expires_at = 0001-01-01T00:00:00Z executor = "docker" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure] [runners.docker] tls_verify = false image = "docker:latest" privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"] shm_size = 0
我怀疑是磁盘空间问题?虚拟机磁盘空间情况:根分区/已使用96%,可用空间仅约1.1GB,属于严重不足状态。
解决建议
优先解决磁盘空间不足问题
根分区可用空间不足2GB是最可能的触发原因,GitLab Runner创建缓存卷时需要足够空间处理权限配置。- 清理Docker冗余资源:执行
docker system prune -a清理未使用的镜像、容器、网络和卷(注意:此命令会删除未被使用的资源,确认后再执行); - 清理系统日志:用
journalctl --vacuum-size=1G压缩并清理老旧系统日志; - 删除过期构建缓存:手动清理
/cache目录下的无用缓存文件,或通过GitLab界面清理项目构建缓存。
- 清理Docker冗余资源:执行
调整Runner缓存配置
- 临时关闭缓存:将
config.toml中的disable_cache = false改为disable_cache = true,执行gitlab-runner restart重启服务,测试流水线是否能正常运行; - 迁移缓存目录:如果
/cache挂载在根分区,可将其改为剩余空间充足的分区路径,修改volumes中的/cache条目后重启Runner。
- 临时关闭缓存:将
更换稳定版Docker
当前使用的Docker是测试版(22.06.0-beta.0),存在兼容性和稳定性风险,建议更换为同系列的稳定版本(如22.06.3),或参考GitLab官方文档选择与Runner 15.5.1兼容的Docker版本。修复缓存卷权限问题
若磁盘空间正常后仍报错,可手动清理缓存并重启服务:- 删除
/cache目录下对应项目的缓存文件夹; - 执行
gitlab-runner restart重启Runner服务。
- 删除
内容的提问来源于stack exchange,提问作者Safa Telli
相关产品推荐
相关产品推荐

