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

5ssjco0h  于 12个月前  发布在  Linux
关注(0)|答案(2)|浏览(130)

我使用最新的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 socket权限如下:

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


是否需要任何额外的配置来允许测试容器在gitlab-runner用户的权限下正确执行Docker命令?非常感谢!!
我已经确认在容器之外,UID为999的用户确实是docker组的成员。

hiz5n14c

hiz5n14c1#

我在/etc/group中添加了docker:x:135:gitlab-runner,现在我可以用gitlab-runner运行Docker了!

igsr9ssn

igsr9ssn2#

这是因为默认情况下Docker引擎以root用户身份运行,实际上还有一种替代方法可以以非root用户身份运行Docker容器(无根容器)
了解更多:https://docs.docker.com/engine/security/rootless/

相关问题