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