【问题标题】:gitlab-ci runner's Docker Executor | How can I see docker container where the build is going on?gitlab-ci runner 的 Docker Executor |如何查看构建正在进行的 docker 容器?
【发布时间】:2017-02-02 04:48:05
【问题描述】:

我是gitlab-ci 的新手。我已经使用 docker executor 在我的私人服务器上设置了 gitlab runner。当我将新提交合并到我的存储库时,会触发构建。我可以从Gitlab 的 Web UI 确认这一点。
据我了解,这些作业是在运行服务器本身上运行的,所以我猜 docker 容器是在我的私有运行服务器上创建的。但是我看不到那个容器,当我做docker ps -a 或者我什至看不到用于创建容器的 docker 图像时。
有没有办法检查容器/图像运行作业?或者我的理解有什么错误?

我可以在 Web 控制台上查看作业日志,但我可以在 CLI 上查看这些日志吗?

如果我在任何时候错了,请纠正我。

【问题讨论】:

  • 确保您正在运行docker ps 的用户有权查看正在运行的容器。我正在使用带有套接字共享的原始 gitlab-runner docker 映像,我可以看到容器在启动后一直在运行(并将其注册到 GitLab)。当跑步者在做作业时,我可以在docker ps 中看到更多条目。之后它们在docker ps -a 中停止可见。

标签: docker gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

当我执行 docker ps -a 或者我什至看不到用于创建容器的 docker 映像时。

如果您已激活 docker:dind 服务(docker in docker),这似乎是意料之中的。

您只会看到带有 Docker socket binding 的容器,其中任何由 docker 命令生成的容器都将是 Runner 的兄弟姐妹,而不是 runner 的孩子。

通过共享 docker 守护进程,您实际上禁用了容器的所有安全机制,并使您的主机暴露于可能导致容器突破的权限升级。
例如,如果一个项目运行 docker rm -f $(docker ps -a -q),它将删除 GitLab Runner 容器。

【讨论】:

  • 我不明白为什么我必须激活 docker:dind 服务。我相信 docker 容器是在 gitlab runner 主机上运行的,不是吗?如果是这样,那么在构建触发后容器应该是可见的,只需执行 docker ps -a 死或运行即可。
  • @Rohanil 所以您使用的是 shell 执行器? (docs.gitlab.com/ce/ci/docker/…)
  • 我正在使用docker executor
  • 我看到 --executor docker 只在 dind 或 socker 绑定中。
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多