Бэкап Docker Volume#
Как по мне способ бэкапа волюмов в докере очень неудобный, но что имеем -__-
По сути вот что описывает документация:
Допустим, имеется некий контейнер с именованным волюмом myvolume.
Нужно создать временный контейнер, чтобы выполнить через него архивацию содержимого волюма. К временному контейнеру нужно примонтировать исходный волюм, а также добавить второй волюм, через который мы сохраним файлы на хост-систему. Команда выглядит следующим образом:
docker run --rm \
-v myvolume:/home \
-v $PWD:/tmp \
alpine tar czvf /tmp/backup.tar.gz -C /home .
Схематично то же самое выглядит так:
myvolume --> ( /home )
[ ./ ] <-- ( /tmp )
( $ tar czvf /tmp/backup.tar.gz -C /home . )
В круглых скобках — содержимое временного контейнера, в квадратных — директория на хосте.
Другими словами, внутри временного контейнера есть директория /home, куда
подключено содержимое исходного волюма и директория /tmp, которая
подключена к файловой системе хост-машины. В контейнере происходит копирование
файлов из /home в /tmp. Архив backup.tar.gz сохранится в папку,
из которой мы вызывали команду docker run
.
Восстановление данных из архива происходит похожим образом:
docker run --rm \
-v $PWD:/tmp \
-v myvolume:/home \
alpine tar xvf /tmp/backup.tar.gz -C /home
Здесь выполняется та же операция, но в обраном направлении — файл из ФС хоста распаковывается в волюм.
Ссылки: