自定义Docker Runner权限不足导致CI Job失败,如何解决?
解决自定义Docker Runner在CI任务中的执行错误
常见问题修复方案
1. 检查Docker守护进程状态
如果主机上Docker服务未运行,会直接导致Runner调用失败:
- 查看服务状态:
sudo systemctl status docker - 启动服务并设置开机自启:
sudo systemctl start docker sudo systemctl enable docker
2. 给Runner用户添加Docker操作权限
自定义Runner默认使用gitlab-runner用户,该用户需要加入docker组才能操作Docker:
- 将用户加入docker组:
sudo usermod -aG docker gitlab-runner - 重启Runner服务生效:
sudo gitlab-runner restart
3. 配置Runner挂载Docker套接字
如果CI任务需要在容器内调用Docker(比如构建镜像),必须在Runner配置中挂载主机的Docker套接字:
- 编辑Runner配置文件(通常路径为
/etc/gitlab-runner/config.toml),在runners.docker段落添加:volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] - 重启Runner服务:
sudo gitlab-runner restart
4. 解除SELinux/AppArmor限制
如果主机启用了SELinux,可能会阻止Runner访问Docker套接字:
- 临时关闭SELinux测试:
sudo setenforce 0 - 若测试有效,可修改SELinux配置为宽容模式(生产环境建议配置专用规则,而非直接关闭):
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

