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

标签 docker docker-compose docker-for-windows

我对 docker-compose 卷(在 docker windows 服务器(容器)中)有一些令人困惑的时刻。
我写了下一个配置

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

为什么有必要写出卷的完整路径?

如果我写:
volumes:
  - "admin-logs:C:/app/Logs"

它产生错误
错误:命名卷“admin-logs:C:/app/Logs:rw”用于服务“admin-stat-table”,但未在卷部分找到声明。

为什么会发生?

更新

让我表明我的意思(我做了错误的解释)。在一张图片中,我们有来自官方文档的简短公告。

enter image description here

我在我的情况下写同样的:
volumes:
  - admin-logs:C:/app/Logs

我之前通过终端创建音量。当我启动 docker-compose up 时,出现下一个错误

ERROR: Named volume "admin-stat-logs:C:/app/Logs:rw" is used in service "admin-stat-table" but no declaration was found in the volumes section.



我在第一种情况下犯了一个错误,它是一个简单的文件夹挂载,对不起我的误解。
volumes:
  - "C:/ProgramData/Docker/volumes/admin-stat-logs:C:/app/Logs"

最佳答案

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

当你写 admin-logs:C:/app/Logs ,您告诉 docker-compose 使用名为 admin-logs 的卷.如果要使用docker-compose所在的文件夹,可以写./admin-logs:C:/app/Logs .

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

version: '3'
services:
  mytest:
    image: ubuntu:18.04
    volumes:
      - "mymnt:/mnt/volume"
      - "./mymnt_on_host:/mnt/mounted_folder"
volumes:
  mymnt:

您需要一个 mymnt_on_host docker-compose.yml 所在文件夹中的目录。

有关此主题的更多信息,您可以查看 reference guide对于 docker-compose.yml

更新:

如果您打算在 docker-compose 中使用已经创建的卷,您可以使用 external: true在卷定义中。

例如

version: '3'
services:
  mytest:
    image: ubuntu:18.04
    volumes:
      - "mymnt:/mnt/volume"
      - "./mymnt_on_host:/mnt/mounted_folder"
volumes:
  mymnt:
  my_existing_volume:
    external: true

现在,如果您启动它,docker-compose 将不会尝试生成 my_existing_volume但它会期望在机器上找到它。

更多信息请查看 external引用。

关于docker - 为什么在 docker-compose 中我应该写卷的完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61631015/

相关文章:

docker - 无法删除 python 和 ubuntu docker 图像

私有(private) docker 存储库的 ssl 证书

docker - 二进制文件是用 'CGO_ENABLED=0' 编译的,go-sqlite3 需要 cgo 才能工作。这是一个 stub

mysql - 无法从 Node Express 应用程序访问 mysql 数据库

docker 运行-v : Unable to mount a bind volume : "invalid volume specification"

linux - 如何从 Windows 10 主机访问 Linux Docker 容器的 TCP 端口

visual-studio-2019 - Visual Studio 2019 docker 是否支持 launchSettings.json 环境变量

json - Dockerrun.aws.json 版本无效,中止部署

azure - :( Application Error when trying to deploy docker-compose app in azure app service

docker-compose - logstash 正在抛出未找到的异常模板文件