我已在 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-compose
(docker-compose
是一个单独的命令)。
Docker Compose V2 具有命令语法docker compose
(compose
是命令的子命令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 语法。