docker compose命令中-p,--project name选项的用途是什么

docker compose命令中-p,--project name选项的用途是什么,docker,docker-compose,Docker,Docker Compose,docker compose命令中-p或--project name选项的用途是什么 它的用例是什么 我是一个新手,还没有开始docker网络。docker networking中是否使用了项目名称 当我在VisualStudio2019中添加docker支持时,VisualStudio运行一些docker compose命令,如下所示。在每一个选项中,都有一个-p选项。我对此很好奇 docker-compose -f "D:\Trials\Docker\VsDokWeb\DokWeb3\do

docker compose命令中-p或--project name选项的用途是什么

它的用例是什么

我是一个新手,还没有开始docker网络。docker networking中是否使用了项目名称

当我在VisualStudio2019中添加docker支持时,VisualStudio运行一些docker compose命令,如下所示。在每一个选项中,都有一个-p选项。我对此很好奇

docker-compose  -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.override.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose5511081461456614166 --no-ansi config
docker-compose  -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.override.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose5511081461456614166 --no-ansi build
docker-compose  -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.override.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose5511081461456614166 --no-ansi up -d --no-build --force-recreate --remove-orphans

我看过docker的文档,也看过,但是从那里我看不到什么

默认情况下,Compose将项目名称基于目录Compose的
basename
命令从运行。项目名称可以由以下两种方式覆盖: 为每个命令传递
-p/--project name
选项或设置
COMPOSE\u PROJECT\u NAME
环境变量

用例基本上是用它来维护不同的项目。例如:-您可以使用相同的
docker compose.yml
来拥有两个不同的项目

在你提到的命令里

docker-compose  -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.override.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose5511081461456614166 --no-ansi config
docker-compose  -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.override.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose5511081461456614166 --no-ansi build
docker-compose  -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\docker-compose.override.yml" -f "D:\Trials\Docker\VsDokWeb\DokWeb3\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose5511081461456614166 --no-ansi up -d --no-build --force-recreate --remove-orphans

如果您看到,它正在操作同一个项目,这就是为什么会给出
-p

如果您多次运行
docker compose
,它会使用项目名称将一个目录的容器、网络和卷与另一个目录的容器、网络和卷分开。Compose不保持任何文件系统状态或运行后台守护程序,因此容器上的元数据是跟踪此情况的唯一方法

假设您有三个Compose项目,
project-a/docker-Compose.yml
project-b/docker-Compose.yml
,以及
project-c/docker-Compose.yml
都有一个名为
db:
的服务。由于它们的项目名称不同,Compose知道它不应该将一个
db
容器重新用于另一个项目,它知道哪个容器应该被
docker Compose down
销毁,依此类推

如果要在同一目录中运行同一撰写堆栈的多个副本,则需要使用
docker compose-p
选项。否则,目录名将用作默认项目名,它们将相互冲突。这可能就是VisualStudio的想法

如果查看
docker ps
docker network ls
docker volume ls
输出,您将看到对象名称中包含的名称,
project-a_db_1
。如果您使用这些命令的详细
inspect
表单,您将看到一些与Compose相关的标签,而这些正是Compose实际需要的