Бекап СУБД внутри Docker, как правильно организовать?
Допустим у меня есть веб-приложение, которое используетс СУБД, живущую внутри Docker-контейнера. Ну, там что-то пишется, что-то читается.
Выносить файлы БД на хост-систему кажется не очень красивым решением. Докер рекламируют как решение контейнеризации, где приложение вместе со всем окружением упаковывается в контейнер, который изолирован от хост-системы, и который можно одной командой перенести с одного сревера на другой. Кроме того, я хочу иметь дело с "чёрным ящиком", к которому можно подключится по TCP, и не хочу разбираться, ни какая там конкретная СУБД вертится внутри, ни, тем более, как у неё хранение данных организованно.
Если не выносить файлы на хост-систему, то все данные будут жить в read-write слое контейнера, если я правильно понимаю. В такм случае непонятно, как их бекапить? Регулярно делать commit контейнера? Вроде бы количество слоёв в AUFS ограниченно (да и куча бессмысленный тегов не очень красиво будет выглядеть). Получается, надо упаковывать внутрь контейнера ещё какие-то скрипты, которые будут бекапить БД?
Контейнер позиционируется как боевая единица, которой дозволено легко умереть и так же легко воскреснуть в новой ипостаси, без причинения какого-либо ущерба всей экосистеме вашего приложения.
Везде, где бы вы ни прочитали о том, как надо готовить СУБД в докере, речи не идёт о том, чтобы данные хранить внутри образа, коммитить их в слои и т.п.