让非 root 用户可以使用 Docker Compose?

让非 root 用户可以使用 Docker Compose?

我在 Ubuntu Linux 22.04.4 服务器上为应用程序创建了一个非 root 用户 ( userB),并将其添加为组成员docker。当我尝试以此用户身份检查 Docker Compose 版本时,出现错误。

$ groups
userB docker
$ docker compose version
docker: 'compose' is not a docker command.
See 'docker --help'

作为我的服务器的主要用户(userA),Docker 和 Compose 似乎都已安装并可用,没有任何问题。

$ docker compose version
Docker Compose version v2.24.6
$ docker version
Client: Docker Engine - Community
 Version:           25.0.3
 API version:       1.44
 Go version:        go1.21.6
 Git commit:        4debf41
 Built:             Tue Feb  6 21:13:09 2024
 OS/Arch:           linux/amd64
 Context:           default

为了防止用户的组没有刷新,我重新启动了服务器以确保组正确加载,但我仍然收到相同的错误。我还需要做什么才能让该用户使用 docker compose?

答案1

正如所述 https://docs.docker.com/engine/security/rootless/

对于每个使用无根 docker 的用户,您需要运行单独的安装脚本dockerd-rootless-setuptool.sh install 来设置守护进程。

dockerd-rootless-setuptool.sh install
[INFO] Creating /home/testuser/.config/systemd/user/docker.service
...
[INFO] Installed docker.service successfully.
[INFO] To control docker.service, run: `systemctl --user (start|stop|restart) docker.service`
[INFO] To run docker.service on system startup, run: `sudo loginctl enable-linger testuser`

[INFO] Make sure the following environment variables are set (or add them to ~/.bashrc):

export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

相关内容