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

Viv*_*Dev 12 docker docker-compose

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

它的用例是什么?

我是新手,还没有开始使用 docker 网络。docker 网络中是否使用了 --project-name ?

当我在 Visual Studio 2019 中添加 docker 支持时,Visual Studio 会运行​​一些 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
Run Code Online (Sandbox Code Playgroud)

我已经在这里看到了 docker 文档,也看到了这个,但无法从那里得到太多信息。

Dav*_*aze 11

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

假设您有三个 Compose 项目,并且project-a/docker-compose.ymlproject-b/docker-compose.ymlproject-c/docker-compose.yml都有一个名为 的服务db:。因为它们的项目名称不同,所以 Compose 知道它不应该db为另一个项目重用一个容器,它知道应该销毁哪个容器docker-compose down,等等。

docker-compose -p如果您想要在同一目录中运行同一 Compose 堆栈的多个副本,则需要一个选项。否则,目录名称将用作默认项目名称,并且它们会相互冲突。这可能就是 Visual Studio 正在考虑的事情。

如果您查看docker psdocker network lsdocker volume ls输出,您将看到对象名称 中包含的名称project-a_db_1。如果您使用这些命令的详细inspect形式,您将看到一些与 Compose 相关的标签,而这些标签正是 Compose 实际查找的内容。