我一直在使用docker-compose,但注意到还有一个docker compose(没有破折号)。 我无法通过谷歌迅速确定这两种形式之间的区别。
有人知道吗?
Docker编写的帮助:
docker-compose的帮助:
我一直在使用docker-compose,但注意到还有一个docker compose(没有破折号)。 我无法通过谷歌迅速确定这两种形式之间的区别。
有人知道吗?
Docker编写的帮助:
docker-compose的帮助:
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船长计划的Brandon Mitchell回复了我在github上的问题,如下:
docker/ composition -cli项目处于中间状态,在docker-cli Linux包的上游版本中不可用,但在docker Desktop中包含。文档页面通常遵循docker/cli中的内容,所以提前发布到Desktop会使文档处于一个困难的位置。我将向Docker团队提出这个问题,看看他们想如何处理它。
更新:来自docker github问题:
Gtardif 2天前评论道 撰写命令参考文档现已激活
新的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
引用自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文件:使用脚本复制并改编到实例文件夹。
为了工作,码头工人们开始写作。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功能,也被称为撰写独立和撰写插件,你可以做以下事情:
# 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。
在本页上检查版本。