Как удалить тома в кластере рой?
У меня есть ройный кластер с одним менеджером и еще один обычный node, когда я создаю службу роя, которую я создаю с типом монтирования, монтированием источника и целью монтирования. Он создает том с таким же именем в ящике и node и запускает контейнер, и моя служба работает.
Когда я освобождаю службу, том, созданный вместе с сервисом, не был удален, это все равно.
Проблема, с которой я столкнулся, - это когда я удаляю том с той же конечной точкой, что он удаляет только тома в диспетчере рои, том, созданный в node, пока создается служба.
Я хочу, чтобы менеджер удалял все тома, созданные вместе с сервисом роя. Есть ли способ?
Ответы
Ответ 1
После такой большой части анализа здесь есть теория.
если вы инструктируете рой создать службу с помощью тома, Swarm выполняет только действия по созданию служб внутри кластера, то есть на нескольких узлах да, когда вы отправляете данные тома да, он также создает том, но при выпуске служба, которую он не может проверить в рабочих узлах для существования объема, освобождая его ошибку в докере
Я поднял ошибку в докере для нее.
В настоящее время нет другого способа, кроме ручного освобождения тома от рабочих узлов после освобождения службы роя.
Ответ 2
Возможно, это вопрос модернизации 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 ]
}
Ответ 3
Насколько я знаю, том создается только на узлах, где создается контейнер. Возможно ли, что ваш сервис не запускается на одном node, заканчивается на другом, и как-то рой не убирается? Если это дело, напишите вопрос в github.
Обновление (из комментариев):
В соответствии с > docker service создайте документацию:
Именованный том - это механизм развязки постоянных данных, необходимых вашему контейнеру, из образа, используемого для создания контейнера и с главной машины. Именованные тома создаются и управляются Docker, и именованный том сохраняется, даже если в данный момент контейнер не используется. Данные в именованных томах могут совместно использоваться между контейнером и главной машиной, а также между несколькими контейнерами. Docker использует драйвер тома для создания, управления и монтирования томов. Вы можете создавать резервные копии или восстанавливать тома с помощью команд Docker.
Итак, если вы используете именованные тома, правильным ответом будет то, почему они удаляются в менеджере и где они когда-либо создавались?