docker 问题:尝试连接到 Docker 守护进程套接字时权限被拒绝

问题描述 投票:0回答:1

我使用最新的

gitlab/gitlab-runner:latest
图像创建了一个测试容器。我想使用
gitlab-runner
用户的权限在此容器中执行 Docker 命令。

容器内:

root@gitlab_runner:/# su gitlab-runner
gitlab-runner@gitlab_runner:/$ id
uid=999(gitlab-runner) gid=999(gitlab-runner) groups=999(gitlab-runner)

执行

docker info
会导致错误:

gitlab-runner@gitlab_runner:/$ docker info
Client:
 Version:    24.0.5
 Context:    default
 Debug Mode: false

Server:
ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info": dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info

使用

root
权限时,执行 docker info 可以按预期工作。

集装箱外:

UID 999 对应于

systemd-coredump
用户,该用户是 docker 组的成员。

$ id systemd-coredump
uid=999(systemd-coredump) gid=999(systemd-coredump) groups=999(systemd-coredump),135(docker)

Docker套接字权限如下:

srw-rw----  1 root              docker    0  Oct 25 13:39 docker.sock=

是否需要进行任何额外配置才能让测试容器在 gitlab-runner 用户的权限下正确执行 Docker 命令?非常感谢!!

我已经确认,在容器外,UID 999的用户确实是docker组的成员。

linux docker gitlab-ci-runner
1个回答
0
投票

这是因为默认情况下 docker 引擎以 root 身份运行,实际上有一种替代方法可以以非 root 用户身份运行 docker 容器(无 root 容器)

了解更多:https://docs.docker.com/engine/security/rootless/

© www.soinside.com 2019 - 2024. All rights reserved.