我一直在使用docker-compose,但注意到还有一个docker compose(没有破折号)。 我无法通过谷歌迅速确定这两种形式之间的区别。

有人知道吗?

Docker编写的帮助:

docker-compose的帮助:


当前回答

如果你不想做改动,但想要原始的遗留docker-compose功能,也被称为撰写独立和撰写插件,你可以做以下事情:

# Run as root
VERSION=v2.12.2
curl -SL https://github.com/docker/compose/releases/download/$VERSION/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

# Test it
docker-compose

这允许你在shell脚本中继续使用docker-compose。

在本页上检查版本。

其他回答

如果docker还没有包含在docker安装中,docker compose可以作为CLI插件安装在Linux上。

COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.tag_name')

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

看到https://docs.docker.com/compose/cli-command/ installing-compose-v2

docker compose(带空格)是一个更新的项目,它将compose与docker项目的其余部分一起迁移到Go。这是docker/compose repo的v2分支。它最初是介绍给Docker Desktop用户的,所以Linux上的Docker用户没有看到这个命令。除了迁移到Go之外,它还使用了复合规范,部分重写可能会导致行为差异。

最初的python项目,称为docker-compose,又名docker/compose repo的v1,现在已经被弃用,开发已经转移到v2。要在Linux上安装v2 docker compose作为CLI插件,受支持的发行版现在可以安装docker-compose-plugin包。例如,在debian上,我运行apt-get install docker- composite -plugin。

如果你不想做改动,但想要原始的遗留docker-compose功能,也被称为撰写独立和撰写插件,你可以做以下事情:

# Run as root
VERSION=v2.12.2
curl -SL https://github.com/docker/compose/releases/download/$VERSION/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

# Test it
docker-compose

这允许你在shell脚本中继续使用docker-compose。

在本页上检查版本。

来自docker船长计划的Brandon Mitchell回复了我在github上的问题,如下:

docker/ composition -cli项目处于中间状态,在docker-cli Linux包的上游版本中不可用,但在docker Desktop中包含。文档页面通常遵循docker/cli中的内容,所以提前发布到Desktop会使文档处于一个困难的位置。我将向Docker团队提出这个问题,看看他们想如何处理它。

更新:来自docker github问题:

Gtardif 2天前评论道 撰写命令参考文档现已激活

新的docker-compose命令参考

除了上面所说的,我还注意到两者之间的一个重要区别。

在我们的设置中,docker-compose。Yml文件位于模板文件夹中。这样我们就可以基于同一个模板运行同一个项目的多个实例。本地实例有自己的文件夹和自己的.env文件(也有自己的卷)。

在模板文件夹中还有一个模板.env文件:使用脚本复制并改编到实例文件夹。

为了工作,码头工人们开始写作。Yml文件看起来像这样,在模板文件夹中:

version: "3"

services:

  wordpress:
    image: wordpress
    container_name: "${COMPOSE_PROJECT_NAME}_wordpress"
    env_file:
      - ${PWD}/.env
 ...

和本地实例的.env文件:

# compose file location
COMPOSE_FILE=../templateFolder/docker-compose.yml

# this instance name
COMPOSE_PROJECT_NAME=foo

在这方面:

使用docker-compose,在实例位置读取.env文件,这是预期的 使用docker compose, .env文件在模板位置读取!

为了覆盖这个,我们必须将模板的.env文件重命名为dotEnv。

这里对这种行为进行了简单的描述:https://docs.docker.com/compose/#multiple-isolated-environments-on-a-single-host