捕获 GitLab Runner 的 Docker 执行器创建的容器日志

捕获 GitLab Runner 的 Docker 执行器创建的容器日志

给定一个 Docker Engine 客户端(GitLab Runner),它通过 Docker Engine API 动态创建和销毁容器。

约束

如果上述一个或多个约束有误,请纠正我。

如果不执行以下任一操作,我怎样才能捕获 GitLab Runner 创建的容器的日志:

  • 向 GitLab Runner 或 Docker Engine 发出合并请求
  • 更改已创建容器的图像

背景是,GitLab Runner 不会发布所谓“服务容器”的日志;另请参阅https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2119

答案1

您可以使用 Docker Engine API。编写一个程序:

  1. 附加到事件流
  2. 附加到日志流已经运行的容器
  3. 附加到日志流新启动的容器
  4. 脱离日志流被毁坏的集装箱

例如将日志流作为 JSONL 传输到 STDOUT。基于此,您应该有很多进一步的选项可以继续。

对于 2. 和 3.,请确保您只使用正在使用json-filejournald日志驱动程序的容器。

相关内容