Я просто осмотрел свою/var/lib/docker/volumes папку и обнаружил, что это является разрывным с папками, названными как Докер UUID, каждый из которых содержат config.json файл с содержанием вроде
{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}
где
/path/to/mounted/volume
путь к папке на хосте, который был смонтирован на контейнере докера с переключателем-v в какой-то момент. У меня есть такие папки, относящиеся ко времени запуска моих экспериментов с Докером, т.е. приблизительно 3 недели назад.
Рассматриваемые контейнеры были остановлены и докер rm'ed давным-давно, таким образом, я не вижу, что те записи не проходят свой срок годности. Это вызывает вопрос - левые по, я вижу ошибку, или нужно вручную отбросить такие записи от/var/lib/docker/volumes?
Для Докера 1.9 и существует собственный путь:
Список все осиротевшие объемы с
$ docker volume ls -qf dangling=true
Устраняют всех их с
$ docker volume rm $(docker volume ls -qf dangling=true)
Из руководства пользователя Докера:
при удалении контейнеров, которые монтируют объемы, включая начальную букву dbdata контейнер или последующие контейнеры db1 и db2, объемы не будут удалены. Для удаления объема из диска необходимо явно назвать комнату докера-v против последнего контейнера со ссылкой на объем. Это позволяет Вам обновлять, или эффективно перемещать объемы данных между контейнерами. - источник
Это - намеренное поведение для предотвращения случайной потери данных. Можно использовать инструмент как объемы очистки докера для вычищения неиспользованных объемов.
Для Докера 1.13 + и ce/ee 17 + номера выпуска, используйте volume prune
команда
docker volume prune
, В отличие от этого, эти dangling=true
запрос, это не удалит "удаленные" основанные на драйвере объемы.