В документации докера говорится следующее:
docker volume prune
=== Удалить все неиспользуемые локальные тома
Чтобы проверить это, я установилКонтейнер MongoDb с официальным последним изображением из Docker Hub. При этом были созданы 2 тома за кулисами, которые, вероятно, необходимы контейнеру для хранения данных.
При запуске docker volume ls
сейчас я вижу два тома со случайными именами.
Допустим, у меня будет несколько контейнеров с томами, использующими случайные имена. Теперь было бы трудно узнать, какие из них все еще используются, и поэтому я ожидал, что docker volume prune
поможет здесь.
Поэтому я выполнил команду, ожидая, что docker volume prune
ничего не удалит, так как мой контейнери работает с MongoDb. Но на самом деле произошло то, что все мои тома были удалены. После этого мой контейнер отключился и не мог быть перезапущен.
Я пытался воссоздать это несколько раз, и каждый раз, даже когда мой контейнер работает, команда просто удаляет все тома.
Любой может объяснить, чтоповедение?
Обновление:
Следующая команда с идентификатором контейнера моего изображения MongoDB показывает мне 2 тома:
docker inspect -f '{{ .Mounts }}' *CONTAINER_ID*
Итак, из моегопонимающий докер знает, что эти тома и контейнер принадлежат друг другу.
Когда я прошу докер показать мне висячие тома, он снова показывает мне те же тома:
docker volume ls --filter dangling=true
Так что, когда онимне кажется, что команда prune удаляет их. Но я явно использую объемы с моим контейнером, так что мне это не ясно.