Бэкап томов Docker одной командой
Именованный том лежит где-то в /var/lib/docker/volumes, но лезть туда руками неудобно и не всегда возможно. Проще смонтировать том во временный контейнер и запаковать его содержимое в архив на хосте.
Сохранить
docker run --rm \
-v app_data:/data:ro \
-v "$PWD":/backup \
alpine tar czf /backup/app_data-$(date +%F).tar.gz -C /data .
Том подключается только на чтение, архив появляется в текущем каталоге. Если приложение активно пишет в базу, его лучше остановить на время копирования или сделать дамп средствами самой СУБД.
Восстановить
docker volume create app_data
docker run --rm \
-v app_data:/data \
-v "$PWD":/backup \
alpine sh -c 'cd /data && tar xzf /backup/app_data-2026-09-01.tar.gz'
Что проверить
- Список томов и их привязку к контейнерам:
docker volume lsиdocker inspect <контейнер>. - Что архив вообще читается:
tar tzf файл.tar.gz | head. - Что копия лежит не на том же диске, что и оригинал.