首页 > 解决方案 > 准备失败:尝试在 unix:///var/run/docker.sock 连接到 Docker 守护程序套接字时获得权限被拒绝

问题描述

试图将 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)

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

标签: dockergitlabgitlab-ci-runnerdocker-daemoncicd

解决方案


  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

推荐阅读