使用本地驱动程序的Docker Volumes是否在Docker Service Replicas之间共享?

时间:2018-12-19 19:40:23

标签: docker docker-volume

我正在阅读有关使用卷启动服务的docker文档。 https://docs.docker.com/storage/volumes/#start-a-service-with-volumes

例如,我创建了一个具有一个管理器节点和一个工作器节点的Swarm。

在我的docker堆栈文件中,我指定:

  1. 部署具有2个副本的一项服务。

  2. 使用该服务的本地驱动程序的卷。称为myVolume。

  3. 通过约束仅在该工作节点上调度服务副本。

文档说:“启动服务并定义卷时,每个服务容器都使用其自己的本地卷。如果使用本地卷驱动器,则任何容器都不能共享此数据,但是某些卷驱动器确实支持共享存储。”

上面的文档是否说在副本2的myVolume中不会看到对副本1的myVolume所做的更改(反之亦然)? Docker是否在_data下为服务的每个新副本创建一个新空间?

1 个答案:

答案 0 :(得分:0)

文档指出的,可能需要重新措辞的是,具有默认选项的本地卷驱动程序会将数据本地存储到每个节点。这样做是为了消除那些假设处于群集模式下的卷以某种方式在节点之间自动复制数据(而不是在节点之间)的混乱情况。因此,分布在4个节点上的服务将具有4个不同的卷。多节点群集集群中需要将持久性数据放置在全局可访问的位置,以支持在节点之间迁移的服务,例如nfs,您实际上可以使用本地卷驱动程序来实现。

对于具有单个节点群的群集或限于单个节点的服务,相同名称的卷安装将使每个副本/容器都可以使用相同的文件,就像您在没有群集的情况下运行它一样。