如何删除群集中的卷?

我有一个pipe理器和另一个正常节点的群集,当我创build一个群集服务,我正在创build与安装types,安装源和安装目标。 它在pipe理员和节点中创build同名的卷,并启动容器,我的服务已启动。

当我释放服务时,与服务一起创build的卷未被删除,这仍然很好。

我面临的问题是,当我删除具有相同端点的卷时,只删除swarmpipe理器中的卷,创build服务时创build的卷仍然存在。

我希望pipe理员删除与swarm服务一起创build的所有卷。 有没有办法?

经过这么多的分析,就是理论。

如果您指示swarm使用卷创build服务,Swarm仅在集群内部执行创build服务的操作,即在多个节点上是当您发送卷的详细信息时是的,它也会创build卷,但是在释放服务的同时在释放Docker中的错误时未能检查工作节点是否存在卷

我在Docker中提出了这个bug。

到目前为止,在释放群集服务之后,除了从工作者节点手动释放卷以外别无他法。

据我所知,卷只是在创build容器的节点上创build的。 有没有可能你的服务无法在一个节点上启动,结束于另一个节点,并且某种方式不能清除? 如果是这样的话,在github上写一个问题。

更新(来自评论):

根据docker服务创build文档 :

命名卷是一种机制,用于将容器所需的持久性数据从用于创build容器的映像和主机中分离出来。 命名卷由Docker创build和pipe理,即使当前没有容器正在使用它,命名卷仍然存在。 命名卷中的数据可以在容器和主机之间共享,也可以在多个容器之间共享。 Docker使用卷驱动来创build,pipe理和挂载卷。 您可以使用Docker命令备份或还原卷。

因此,如果您使用命名卷,正确的答案将是为什么他们被删除的经理,他们曾经在那里创build?

可能只是升级Docker的问题? 根据这个Git 页面,它应该清理一切。

@test "docker volume rm" { start_docker_with_busybox 2 swarm_manage # check for failure when removing a non-existent volume run docker_swarm volume rm test_volume [ "$status" -ne 0 ] # run a container that exits immediately but stays around and # connected to the volume. Wait for it to finish. docker_swarm run -d --name=test_container -v=/tmp busybox true docker_swarm wait test_container run docker_swarm volume ls -q volume=${output} [ "${#lines[@]}" -eq 1 ] # check that removing an attached volume is an error run docker_swarm volume rm $volume [ "$status" -ne 0 ] docker_swarm rm test_container run docker_swarm volume rm $volume [ "$status" -eq 0 ] [ "${#lines[@]}" -eq 1 ] run docker_swarm volume ls [ "${#lines[@]}" -eq 1 ] }