You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI构建失败后,如何进入Docker查看作业相关文件?

场景
  • 向自托管GitLab服务器上的仓库推送代码
  • 触发Runner运行CI作业
  • CI作业执行失败
  • 需要排查失败原因
问题

如何进入Docker(容器?镜像?卷?),查看CI作业失败时可用的文件?例如作业提示“查看foo.log获取详情”,拥有Runner服务器的直接SSH权限,但不知道该去哪里查找或如何进入Docker来检查foo.log。


解决方法

方法一:临时修改CI配置,让失败作业停留在交互状态

在项目的.gitlab-ci.yml中,给目标作业添加失败后进入bash的逻辑,这样作业失败时会保持容器运行,直接在容器内排查:

your_failed_job:
  script:
    - 原有的作业执行命令 || bash  # 命令执行失败后进入bash交互

提交修改后重新触发作业,失败时终端会停在容器的bash环境,直接查看foo.log即可。

方法二:查找并进入Runner遗留的容器/卷

  1. 查找作业容器:SSH到Runner服务器,列出所有容器(包括已停止的):
docker ps -a

找到名称或标签包含gitlab-runner、项目ID或作业ID的容器。

  1. 进入存活/停止的容器:
    如果容器还在运行或未被清理,启动并进入:
docker start <容器ID/名称>
docker exec -it <容器ID/名称> bash

进入后直接导航到foo.log所在路径查看内容。

  1. 挂载临时卷查看文件:如果容器已被销毁,检查Runner创建的临时卷:
docker volume ls

找到名称以runner-开头的卷,用临时容器挂载该卷:

docker run -it --rm -v <卷名称>:/workspace ubuntu bash

在/workspace目录下即可找到作业生成的foo.log等文件。

方法三:修改Runner配置,默认保留失败作业容器

编辑Runner的配置文件(通常路径为/etc/gitlab-runner/config.toml),找到对应Runner的配置段,添加保留失败容器的配置:

[runners.docker]
  # 其他原有配置...
  preserve_container_on_failure = true

重启GitLab Runner服务:

sudo gitlab-runner restart

之后所有失败的作业容器都会被保留,直接用docker ps -a定位后进入排查即可。

内容的提问来源于stack exchange,提问作者nullromo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:32:06