Потерянные настройки подключенных томов хозяин?


Я только что проверил свою папку /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 60

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 запрос, это не приведет к удалению "удаленных" томов на основе драйверов.