Подтвердить что ты не робот

Освобожденные Докеры смонтировали хосты?

Я только что просмотрел папку my/var/lib/docker/volume и обнаружил, что она разрывается с папками с именем UUID Docker, каждый из которых содержит файл config.json с содержимым в строках

{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}

где

/path/to/mounted/volume

- это путь к папке на хосте, которая была установлена ​​в контейнер-докер с ключом -v в какой-то момент. У меня есть такие папки, относящиеся к началу моих экспериментов с Docker, т.е. Около трех недель назад.

Контейнеры, о которых идет речь, были остановлены, и докеры давно появились, поэтому я не вижу, чтобы эти записи не проходили мимо их даты продажи. Это вызывает вопрос - осталось ли я, что я вижу ошибку, или нужно вручную отбросить такие записи из/var/lib/docker/томов?

4b9b3361

Ответ 1

Для Docker 1.9 и там есть родной путь:

Список всех потерянных томов с помощью

$ docker volume ls -qf dangling=true

Устраните все из них с помощью

$ docker volume rm $(docker volume ls -qf dangling=true)

Ответ 2

В руководстве пользователя Docker:

Если вы удалите контейнеры, которые монтируют тома, включая исходный контейнер dbdata или последующие контейнеры db1 и db2, томы не будут удалены. Чтобы удалить том с диска, вы должны явно вызвать docker rm -v против последнего контейнера со ссылкой на том. Это позволяет вам обновлять или эффективно переносить объемы данных между контейнерами. - источник

Это преднамеренное поведение, чтобы избежать случайной потери данных. Вы можете использовать инструмент, например docker-cleanup-volumes, чтобы очистить неиспользуемые тома.

Ответ 3

Для версий Docker 1.13+ и ce/ee 17+ используйте команду volume prune

docker volume prune

В отличие от запроса dangling=true, это не приведет к удалению "remote" томов на основе драйверов.