0

我在 Ubuntu 18.04.6 LTS 上使用 gitlab-runner 版本 14.4.0 和 docker 版本 20.10.11 我用于跑步者的机器是功能强大的 Supermicro 服务器。我们的 Gitlab CI 在 gitlab cloud (SAAS) 上

我在构建阶段作业中收到以下错误:

  1. 错误:作业失败(系统故障):无法在 unix:///var/run/docker.sock 连接到 Docker 守护程序。docker 守护进程是否正在运行?(exec.go:66:120s)
  2. 错误:作业失败(系统故障):无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。docker 守护进程是否正在运行?(docker.go:708:120s)
  3. 准备失败:添加缓存卷:设置卷权限:为卷“runner-######-project-#####-concurrent-0-cache-##########创建权限容器####":无法连接到 unix:///var/run/docker.sock 上的 Docker 守护进程。docker 守护进程是否正在运行?(linux_set.go:90:120s)
  4. 错误:作业失败(系统故障):准备环境:无法在 unix:///var/run/docker.sock 连接到 Docker 守护程序。docker 守护进程是否正在运行?(docker.go:708:120s)。检查https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading了解更多信息

到目前为止我尝试过的解决方案:

  1. 在 config.toml 中为所有跑步者添加了多拉策略:pull_policy = ["always", "if-not-present"]
  2. 为 docker 和 sudo 组授予 gitlab-runner 用户权限
  3. 试过 chmod 666 /var/run/docker.sock
  4. systemctl docker enable & systemctl docker start
  5. 重新启动 gitlab-runner 并重新加载守护进程
  6. 使用 Ubuntu 18.04.6 LTS、最新的 docker 和 gitlab-runner 从头开始​​安装机器

似乎什么都没有解决这个问题。通常只是在错误使作业运行后重新启动作业。但这不是解决方案。

我是新手,感谢您的帮助!

谢谢

4

1 回答 1

0

您遇到的问题是您正在尝试使用 docker 套接字来构建容器,而实际上并未在执行程序中公开 docker 套接字。对于如何解决此问题,您有三个选项:

  1. 将 docker 套接字映射到运行器中。为此,在您指定的位置volumes,添加/var/run/docker.sock:/var/run/docker.sock到映射卷的数组。
  2. 将 docker-in-docker 与特权容器一起使用,这不需要您映射 docker 套接字,但需要您熟悉 DIND 的工作原理并遵循此处的说明:https ://docs.gitlab.com/ ee/ci/docker/using_docker_build.html#use-the-docker-executor-with-the-docker-image-docker-in-docker
  3. 使用一些东西来构建不需要 docker 套接字的容器。我强烈建议使用 Kaniko 构建您的 docker 容器 - 它往往比 docker 更快,您可以完全忽略 docker 套接字的使用(这也使您的构建更加安全):https ://docs.gitlab.com /ee/ci/docker/using_kaniko.html#building-a-docker-image-with-kaniko
于 2021-11-30T01:56:55.553 回答