我有一个包含一个管理器和另一个普通节点的swarm集群,当我创建一个swarm服务时,我正在创建mount类型,mount source和mount target。它在manger和node中创建具有相同名称的卷,并启动容器,我的服务已启动。
当我发布服务时,与服务一起创建的卷未被删除,这仍然没有问题。
我面临的问题是,当我删除具有相同端点的卷时,它只删除了swarm管理器中的卷,在创建服务时在节点中创建的卷仍然存在。
我希望管理员删除与swarm服务一起创建的所有卷。有办法吗?
答案 0 :(得分:7)
经过这么多的分析,理论就是这样。
如果您指示swarm使用卷创建服务,则Swarm仅执行在集群内创建服务的操作,即在多个节点上执行是,当您发送卷详细信息时是,它确实创建了卷但在释放时该服务在发布其在docker中的错误
时未能检查工作节点是否存在卷我已经在码头工具中提出了它的错误。
截至目前,除了在释放群组服务后从工作节点手动释放卷之外别无其他方法。
答案 1 :(得分:3)
据我所知,卷只在创建容器的节点上创建。是否有可能您的服务无法在一个节点上启动,最终在另一个节点上以某种方式群集无法清理?如果是这样的情况在github中写了一个问题。
更新(来自评论):
根据docker service create documentation:
命名卷是一种机制,用于将容器所需的持久数据与用于创建容器和主机的映像分离。命名卷由Docker创建和管理,即使当前没有容器正在使用它,命名卷也会保留。命名卷中的数据可以在容器和主机之间共享,也可以在多个容器之间共享。 Docker使用卷驱动程序来创建,管理和装载卷。您可以使用Docker命令备份或恢复卷。
因此,如果您使用的是命名卷,那么正确的答案就是为什么它们会在经理上被删除以及它们在那里创建的地方?