LINUX.ORG.RU

Docker на BTRFS - Как правильно делать снапшоты?

 , , ,


1

2

Добрый день! Помогите, пожалуйста, разобраться в вопросе. Есть домашний сервер на Ubuntu 18.04, которая установлена на программный RAID, созданный средствами BTRFS. На сервере установлен nginx, который работает как web-proxy и несколько web-приложений, nextcloud через snap, zoneminder, piwigo, onlyoffice document sererver через docker. Есть задача делать снапшоты всей системы. Как я понял, docker создает множество сабвольюмов в var/lib/docker/btrfs/subvolumes. При монтировании /dev/sdb1, на котором установлена система, в /mnt вижу только сабвольюм @, в котором находится корень. При команде btrfs subvolume list / вижу его и дюжину сабволюмов docker. Вопрос в следующем, при снапшоте всего корневого раздела, делается ли бекап данных docker? Надо ли останавливать контейнеры при снапшоте? На другом сервере с примерно аналогичной конструкцией при откате на старый снапшот, увы, контейнеры docker не заработали. Заранее большое спасибо!

Вопрос в следующем, при снапшоте всего корневого раздела, делается ли бекап данных docker?

Нет, ты же сам говоришь, что они на другом subvolume.

Надо ли останавливать контейнеры при снапшоте?

Нет, надо рассказать, зачем вообще кому-то бэкапить контейнеры.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Как тогда корректно сделать бекап данных приложения в docker, подскажите, пожалуйста? Только примонтировать каталоги для data и config отдельно и их бекапить?

nikhsipe
() автор топика
Ответ на: комментарий от nikhsipe

Вопрос звучит странно. Ты понимаешь, что снапшот бэкапом не является? А так можно, конечно. Создаёшь RO-снапшоты всех нужных подтомов, а потом делаешь с них бэкап. Просто это придётся автоматизировать не без помощи docker inspect, мне кажется.

anonymous
()
Ответ на: комментарий от anonymous

Понимаю, что это не бекап, который можно взять и унести, а снимок состояния системы на определенное время. Как раз и хочу иметь возможность, в случае чего, сделать откат на прошлый снапшот. Но контейнеры docker после отката не запускаются, и не удаляются. Висят со статусом exited. Можно только загрузится с флешки, смонтировать раздел целиком, зайти в var/lib/docker/btrfs/subvolumes, удалить вручную все subvoleme’ы. После чего можно скачать образы и запустить контейнеры. Мой вопрос, каким образом, если возможно, сделать снапшоты, чтобы сделать откат на определенный снимок и с работающими контейнерами. Извините, что запутал возможно. Спасибо!

nikhsipe
() автор топика
Ответ на: комментарий от nikhsipe

Какой смысл в натягивании состояний на stateless-контейнеры? Тебе в принципе должно быть наплевать на сами контейнеры. Хранишь свой файл docker-compose (например) в системе контроля версий, выполняешь откат разворачиванием нужной версии. К вопросу снапшотов данных — это тоже не очень. Лезть в подтома Docker не стоит, потому что это implementation details, и что-то может со временем сломаться. Лучше делать бэкап в систему с историей версий (borg, restic) или на ФС со снапшотами (Btrfs, ZFS).

anonymous
()

Начать с того, что snapshot – это и есть subvolume.

Кажется, в формулировке вопроса смешаны docker volumes и btrfs volumes.

i586 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.