“码头作曲”与“码头作曲”的区别

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

有人吗?

docker compose的帮助:

enter image description here

docker-compose的帮助:

enter image description here

40518 次浏览

docker compose(带有一个空格)是一个较新的项目,它要迁移到与 docker 项目的其余部分一起构成 Go。这是 码头工人/作曲工人回购的 v2分支。它首先被介绍给 Docker 桌面用户,所以 Linux 上的 Docker 用户没有看到这个命令。除了迁移到 Go 之外,它还使用了撰写规范,并且部分重写可能会导致行为差异。

最初的 python 项目称为 docker-compose,也就是 docker/compose repo 的 v1,现在已经过时,开发工作转移到了 v2。要在 Linux 上将 v2 docker compose作为 CLI 插件安装,受支持的发行版现在可以安装 docker-compose-plugin包。例如,在 Debian 上,我运行 apt-get install docker-compose-plugin

码头船长计划 回答道我在这上面打开了一个 github 的问题的布兰登 · 米切尔如下:

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

更新: 来自 docker Github 的问题:

Gtardif 两天前评论道

编写命令参考文档现在已经启动

新的 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

引自 https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command

Compose V2 and the new docker compose command
Important
The new Compose V2,
which supports the compose command as part of the Docker CLI, is now available.


Compose V2 integrates compose functions into the Docker platform,
continuing to support most of the previous docker-compose features and flags.
You can run Compose V2 by replacing the hyphen (-) with a space,
using docker compose, instead of docker-compose.

除了这里已经说过的,我还注意到两者之间的一个重要区别。

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

模板文件夹中还有一个模板 .env文件: 使用脚本复制并适应实例文件夹。

为了工作,在模板文件夹中的 docker-compose.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

如果你不想改变,但是想要原来的 docker-compose功能,也称为 Compose 独立 vs 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

检查本页 上的版本。