我已在 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 Compose 没有找到正确的docker.sock
文件,尽管我的非 root 用户的~/.bashrc
文件包含:
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/1007/docker.sock
如何让 Docker Compose 识别正确的docker.sock
文件?
您在 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
在一段时间内仍会使用旧语法,直到 V2 变得更加主流。同时,如果您正在运行 V2,请记住用新语法替换。有关新 V2 语法的参考,请参见此处。