为什么在docker compose中我应该写入卷的完整路径?

为什么在docker compose中我应该写入卷的完整路径?,docker,docker-compose,docker-for-windows,Docker,Docker Compose,Docker For Windows,我对docker compose卷(在docker windows server(容器)中)有些困惑。 我编写了下一个配置 volumes: - "C:/ProgramData/Docker/volumes/admin-stat-logs:C:/app/Logs" 为什么必须写入卷的完整路径 如果我写: volumes: - "admin-logs:C:/app/Logs" 它会产生错误 错误:在服务“管理统计表”中使用了命名卷“管理日志:C:/app/logs:rw”,但在卷部分中

我对docker compose卷(在docker windows server(容器)中)有些困惑。 我编写了下一个配置

volumes:
  - "C:/ProgramData/Docker/volumes/admin-stat-logs:C:/app/Logs"
为什么必须写入卷的完整路径

如果我写:

volumes:
  - "admin-logs:C:/app/Logs"
它会产生错误 错误:在服务“管理统计表”中使用了命名卷“管理日志:C:/app/logs:rw”,但在卷部分中未找到声明

为什么会这样

更新

让我来说明我的意思(我犯了错误)。在一张图片中,我们从官方文档中看到了一条简短的公告

我在我的案例中也写了同样的话:

volumes:
  - admin-logs:C:/app/Logs
我在终端之前创建卷。当我启动docker compose up时,会出现下一个错误

错误:服务“管理员统计表”中使用了命名卷“管理员统计日志:C:/app/logs:rw”,但在卷部分未找到声明。

我在第一个案例中犯了一个错误,这是一个简单的文件夹挂载,很抱歉我的误解

volumes:
  - "C:/ProgramData/Docker/volumes/admin-stat-logs:C:/app/Logs"

您不需要使用完整路径。您可以使用docker-compose.yml文件位置的相对路径

当您编写
管理日志:C:/app/logs
时,您告诉docker compose使用名为
管理日志
的卷。如果要使用docker compose所在的文件夹,可以编写
/admin logs:C:/app/logs

如果计划使用单独的docker卷,则需要首先在docker-compose.yml中定义它。下面是一个涵盖这两种情况的示例:

版本:“3”
服务:
我的测试:
图片:ubuntu:18.04
卷数:
-“mymnt:/mnt/卷”
-“\u主机上的/mymnt\u:/mnt/mounted\u文件夹”
卷数:
mymnt:
在docker-compose.yml所在的文件夹中,您需要一个主机上的
mymnt\u
目录

有关此主题的更多信息,请查看docker-compose.yml的

更新:

如果计划在docker compose中使用已创建的卷,则可以在卷定义中使用
external:true

e、 g

版本:“3”
服务:
我的测试:
图片:ubuntu:18.04
卷数:
-“mymnt:/mnt/卷”
-“\u主机上的/mymnt\u:/mnt/mounted\u文件夹”
卷数:
mymnt:
我的现有卷:
外部:正确
现在,如果您启动此操作,docker compose将不会尝试生成
my_existing_volume
,但它将期望在计算机上找到它


有关更多信息,请查看参考。

能否在
docker compose.yml
文件中显示您的版本值。它应该是
版本:“3”
版本:“3.5”
。可能您有
版本:“2”

,但您不需要编写完整路径来使用该卷,对吗?我应该这样做,因为如果没有,我会出错。问题是:如果我只写卷的名称,为什么会出现错误?为什么这么必要?您不需要完整的路径。正如我写的,您可以使用docker-compose.yml所在位置的相对路径。在您的情况下,您试图使用未定义的卷。好的,我想我理解您的意思。由于卷声明必须出现在docker-compose.yml中,因此会出现该错误。你不能简单地预先创建它并启动containers.lulz,这是我第一次得到F。你能接受答案吗?所有版本的Compose YAML文件中的卷语法都是相同的(并且镜像了
docker run-v
选项,该选项基本上从未更改过)。@DavidMaze correct,但我也有类似的问题,我记得,只是把它改成了版本3。