Бэкап 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

Здесь выполняется та же операция, но в обраном направлении — файл из ФС хоста распаковывается в волюм.

Ссылки: