You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ubuntu 22.04.4服务器上的非root用户使用Docker Compose?

如何让Ubuntu 22.04.4服务器上的非root用户使用Docker Compose?

我之前碰到过类似的问题,你已经把userB加入docker组了,但还是出现docker: 'compose' is not a docker command的错误,大概率是Docker Compose插件的权限或者路径配置问题导致的。给你几个具体的排查和解决步骤:

  • 第一步:检查Docker Compose插件的权限
    Docker Compose V2是作为Docker CLI插件安装的,默认路径是/usr/libexec/docker/cli-plugins/docker-compose。先切换到userA账号,执行下面的命令查看这个文件的权限:

    ls -l /usr/libexec/docker/cli-plugins/docker-compose
    

    正常的权限应该是-rwxr-xr-x(所有者、组、其他用户都有读和执行权限)。如果最后三位是---或者--x,说明userB这类非所有者用户没有足够权限访问插件。这时候用root权限修改权限:

    sudo chmod o+rx /usr/libexec/docker/cli-plugins/docker-compose
    

    修改完切换回userB,再试docker compose version。

  • 第二步:确认userB的Docker客户端版本
    要是userB的Docker客户端版本太低,可能不支持Compose V2的插件模式。让userB执行下面的命令检查版本:

    docker version
    

    确保客户端版本在20.10.0以上(这个版本开始支持Compose V2插件)。如果版本太低,更新Docker到最新版本:

    sudo apt update && sudo apt upgrade docker-ce docker-ce-cli containerd.io
    sudo systemctl restart docker
    
  • 第三步:检查插件路径的环境变量
    Docker CLI默认会找/usr/libexec/docker/cli-plugins/路径,但如果userB的环境变量里设置了DOCKER_CLI_PLUGINS_PATH,可能会覆盖默认路径。让userB执行:

    echo $DOCKER_CLI_PLUGINS_PATH
    

    如果输出不是空的,而且没包含/usr/libexec/docker/cli-plugins/,就把这个路径加到环境变量里。比如在userB的~/.bashrc文件里加一行:

    export DOCKER_CLI_PLUGINS_PATH="/usr/libexec/docker/cli-plugins/:$DOCKER_CLI_PLUGINS_PATH"
    

    然后执行source ~/.bashrc生效,再试命令。

  • 第四步:排查是否是独立安装的Docker Compose
    如果你之前给userA单独装了独立的docker-compose二进制文件(比如放在/home/userA/.local/bin/),那userB的PATH里可能没这个目录。这种情况可以把二进制文件移到全局路径:

    sudo mv /home/userA/.local/bin/docker-compose /usr/local/bin/
    sudo chmod a+x /usr/local/bin/docker-compose
    

    这时候userB可以用docker-compose version(注意是下划线)验证,不过更建议用插件模式,统一用docker compose命令。

备注:内容来源于stack exchange,提问作者Dan Herbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:38:03