我在 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