Docker Compose 无法执行:“未找到命令‘docker-compose’”

Docker Compose 无法执行:“未找到命令‘docker-compose’”

我已在 Ubuntu Server 20.04 上以非 sudo 用户身份安装了最新的 Docker Compose,并在非 sudo 用户目录中安装了 docker-rootless 守护程序,使用以下命令:

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose

并通过以下方式验证安装成功:

$ docker compose version
Docker Compose version v2.2.3

但是,每当我尝试执行我创建的docker-compose up -d文件时.yml,我都会得到以下输出:

$ docker-compose up -d
WARNING:root:could not open file '/etc/apt/sources.list.d/mongodb-org-5.0.list'

Command 'docker-compose' not found, but can be installed with:

snap install docker          # version 20.10.11, or
apt  install docker-compose  # version 1.25.0-1

See 'snap info docker' for additional versions.

docker.sock尽管我的非 root 用户的~/.bashrc文件包含以下内容,但Docker Compose 找不到正确的文件:

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

如何让 Docker Compose 识别正确的docker.sock文件?

答案1

您在 Docker Compose 命令中犯了一个非常基本的错误。

Docker Compose V1 具有命令语法docker-composedocker-compose是一个单独的命令)。

Docker Compose V2 具有命令语法docker composecompose是命令的子命令docker)。

由于您已经安装了 Docker Compose V2 分支,因此您不能使用docker-compose up -d,而应该使用正确的 V2 语法:

docker compose up -d

我认为大多数安装说明docker-compose在一段时间内仍将使用旧语法,直到 V2 成为主流。与此同时,如果您正在运行 V2,请记住用新语法替换。

如果要保留与旧语法的兼容性,可以创建如下别名:

alias docker-compose='docker compose'

这在大多数情况下都是有效的。

自 2023 年 7 月起,旧 Docker Compose V1 语法已完全弃用,只有支持 V2 语法

相关内容