Очистка Docker — могу ли я удалить старые каталоги в /var/ lib /docker /containers

#docker

#docker

Вопрос:

В моей системе запущено 16 контейнеров docker, в которых хранится много данных /var/lib/docker/overlay2/<id> (около 30 ГБ на каталог.. Всего 30 * 16 ГБ). В основном пространство потребляется diff и merged каталогами внутри него.

Каждый раз, когда я выполняю docker-compose down followed by docker-compose up , он создает еще один набор из 16 каталогов и начинает хранить данные под ним. Но это не очищает старые каталоги overlay2. Это приводит к нехватке места

  1. Пожалуйста, дайте мне знать, могу ли я выполнить rm -rf /var/lib/docker/overlay2/ старых каталогов или как я могу освободить место.
  2. Нужно ли мне ждать пару часов, docker-compose down чтобы освободить место?

Примечание: я docker system prune -a также сделал.

Комментарии:

1. rm -rf /var/lib/docker/overlay2/ дублируются указывает на то, что старые устаревают. Удалите их и проверьте (но не перед созданием резервной копии!)

2. /var/lib/docker/overlay2 не дублируется, я имел в виду, что каталоги в overlay2 не очищаются при удалении контейнеров

3. Должны ли они быть? Если да, то продолжайте

Ответ №1:

1) Пожалуйста, дайте мне знать, могу ли я выполнить rm -rf /var/lib/docker/overlay2/ старых каталогов или как я могу освободить место.

Только вы можете это решить.
Когда я подозреваю, что неиспользуемые данные для /var/lib/docker/overlay2/foo123 папки, я сначала проверяю содержимое этой папки. Он обычно содержит содержимое изображения. С датой изменения файлов и содержимого файлов у меня есть высокая вероятность определить, является ли папка бесполезной.
Когда я уверен, что это бесполезно, я удаляю его с rm -rf ... помощью . Обратите внимание, что удаление может завершиться неудачно из-за монтирования файла, в этом случае я сначала идентифицирую их и размонтирую.
Если я не уверен, что это бесполезно, я выполняю резервное копирование, например, cp -a /var/lib/docker/overlay2/foo123 /var/lib/docker/overlay2/backup-foo123 перед удалением

2) Нужно ли мне ждать пару часов после docker-compose, чтобы освободить место?

С помощью только Docker, вообще нет. Данные должны быть явно удалены (например, : docker container rm FOO , docker system prune , docker system prune -a , docker image rm FOO и так далее).
Но Docker не идеален. Поэтому иногда у вас могут быть устаревшие данные.
Обычно время от времени я проверяю большие папки docker с du -sh */ | sort -h помощью .