准备失败:尝试连接到位于 unix:///var/run/docker.sock 的 Docker 守护程序套接字时权限被拒绝

Ser*_*Cio 6 gitlab docker gitlab-ci-runner docker-daemon cicd

尝试将 gitlab 中的项目转换为 docker 镜像。gitlab 是自托管的。这是我得到的错误:

Running with gitlab-runner 13.12.0 (7a6612da)
on test -KnwQXuT
Preparing the "docker" executor
ERROR: Failed to remove network for build
ERROR: Preparation failed: Got permission denied while trying to connect to the Docker daemon 
socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.25/info: dial 
unix /var/run/docker.sock: connect: permission denied (docker.go:858:0s)
Run Code Online (Sandbox Code Playgroud)

我添加了一个跑步者,注册了它,使用 docker 模板创建了一个 gitlab-ci.yml ,我没有修改它。作为解决方案,我chmod 666 /var/run/docker.sock在添加跑步者之前和之后尝试过,但它不起作用。我还在运行和注册 docker runner 之前添加了 sudo 但仍然没有成功。我找到了另一个选项将我的 docker 用户添加到 docker 组,但我的所有用户都在 docker 组中。docker runner 作为 docker 镜像运行。我不知道该怎么办...请帮忙。我尝试了大约 10 天,但没有成功...提前致谢

小智 14

  1. 如果不存在则创建 docker 组:sudo groupadd docker
  2. 将用户添加到 docker 组:sudo usermod -aG docker ${USER}
  3. 将 docker.sock 更改为新权限:sudo chmod 666 /var/run/docker.sock
  4. 最后重新启动 docker daemon 服务:sudo systemctl restart docker


小智 6

当您使用 gitlab 自托管运行器时,默认情况下,它会创建一个名为gitlab-runner的用户。您需要为其分配权限。

sudo usermod -aG docker gitlab-runner
Run Code Online (Sandbox Code Playgroud)

这将为 gitlab-runner 分配正确的权限,并应在该虚拟机上提取 docker 映像。