准备失败:尝试连接到unix:///var/run/docker.sock处的Docker守护程序套接字时,遇到了权限被拒绝的问题。

5
尝试将 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)

我添加了一个runner并注册了它,创建了一个带有未修改的docker模板的gitlab-ci.yml文件。作为解决方案,我尝试在添加runner之前和之后执行chmod 666 /var/run/docker.sock,但没有成功。我还在运行和注册docker runner之前添加了sudo,但仍然没有成功。我发现另一种方法是将我的docker用户添加到docker组,但是所有的用户都已经在该组中了。docker runner作为docker镜像运行。我不知道该怎么办...请帮帮我,我已经尝试了大约10天,但没有成功...提前感谢。


你能提供你的运行配置吗? - antoniomerlin
  1. 创建docker卷gitlab-runner-config
  2. 运行docker命令:docker run -d --name gitlab-runner --restart always
    -v /var/run/docker.sock:/var/run/docker.sock
    -v gitlab-runner-config:/etc/gitlab-runner
    gitlab/gitlab-runner:latest
  3. 运行docker命令:docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register
- SerCio
这是我采取的三个步骤。 - SerCio
2个回答

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

什么用户?我在Linux上是root。 - SerCio
@SerCio 如果您是root用户,则不需要任何访问权限来使用docker。 - Javad
它不起作用。我已经执行了命令sudo chmod 777 /var/run/docker.sock,但仍然收到错误消息。我不知道该怎么办... - SerCio
请不要建议将docker.sock的权限设置为chmod 666,因为这会带来巨大的安全隐患,允许任何用户成为root。 - Tofandel

4

当你使用GitLab自托管的Runner时,默认情况下会创建一个名为gitlab-runner的用户。你需要分配权限给它。

sudo usermod -aG docker gitlab-runner

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接