8

在 Docker Compose 文档中,在这里,您有以下与文件volumes部分相关的示例docker-compose.yml

volumes:
  # (1) Just specify a path and let the Engine create a volume
  - /var/lib/mysql

  # (2) Specify an absolute path mapping
  - /opt/data:/var/lib/mysql

  # (3) Path on the host, relative to the Compose file
  - ./cache:/tmp/cache

  # (4) User-relative path
  - ~/configs:/etc/configs/:ro

  # (5) Named volume
  - datavolume:/var/lib/mysql

哪些语法产生绑定挂载,哪些产生docker 卷?在文档的某个地方,这两个概念是严格区分的,但在这个地方它们混合在一起......所以我不清楚。

4

2 回答 2

3

每当您在评论中看到“音量”时,都会创建一个音量:所以(1)和(5)。

如果评论中没有卷,这是关于绑定挂载

https://docs.docker.com/storage/images/types-of-mounts-bind.png

关于 docker-compose 中的卷的文档在这里:

挂载主机路径或命名卷,指定为服务的子选项。

您可以将主机路径挂载为单个服务定义的一部分,无需在顶级卷键中定义它。

但是,如果您想跨多个服务重用一个卷,请在顶级卷键中定义一个命名卷。

顶级键定义了一个命名卷并从每个服务的卷列表中引用它。这将替换早期版本的 Compose 文件格式中的 volumes_from。有关卷的一般信息,请参阅使用卷卷插件

于 2018-02-19T20:46:23.330 回答
2

这是两个完全不同的概念。卷意味着给定目录将在容器运行之间持久化。想象一下 MySQL 数据库。您不想丢失您的数据。另一方面,有一个绑定挂载,您可以将本地目录附加到容器中的目录。如果容器在那里写了一些东西,它将出现在您的文件系统中,反之亦然(同步)。

附带说明一下,卷只不过是计算机上目录的符号链接:)(/var/lib/docker/volumes/...默认情况下指向目录)

于 2018-02-19T21:26:47.513 回答