#docker
#docker
Вопрос:
В моей системе запущено 16 контейнеров docker, в которых хранится много данных /var/lib/docker/overlay2/<id>
(около 30 ГБ на каталог.. Всего 30 * 16 ГБ). В основном пространство потребляется diff
и merged
каталогами внутри него.
Каждый раз, когда я выполняю docker-compose down
followed by docker-compose up
, он создает еще один набор из 16 каталогов и начинает хранить данные под ним. Но это не очищает старые каталоги overlay2. Это приводит к нехватке места
- Пожалуйста, дайте мне знать, могу ли я выполнить rm -rf /var/lib/docker/overlay2/ старых каталогов или как я могу освободить место.
- Нужно ли мне ждать пару часов,
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
помощью .