Назад | Перейти на главную страницу

Резервное копирование больших томов докеров по сравнению с привязкой монтирования по сравнению с / var / lib / docker / volume / (owncloud)

Я в некотором роде «унаследовал» докеризованную серверную среду, и теперь мне нужно реализовать концепцию резервного копирования - особенно для контейнера Owncloud, который хранит пользовательские файлы внутри тома докера. В документации docer [1] говорится, что «тома имеют несколько преимуществ по сравнению с привязками» и, следовательно, «являются предпочтительным механизмом». Одно из перечисленных преимуществ состоит в том, что «легче создавать резервные копии томов», и в документации предлагается следующая команда для создания резервной копии тома tar:

$ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

Однако, особенно для резервного копирования (я использую резервное копирование borg для синхронизации файлов хоста с удаленным репозиторием), я вижу несколько недостатков в этом способе:

Я относительно новичок в докере, поэтому, возможно, я еще не получил полного обзора экосистемы докера. Но, насколько мне известно, для этой ситуации я думаю, что, в частности, лучшим решением будет привязка. К тому же я все равно не пользуюсь другими преимуществами объемов. Или я что-то упускаю? Есть ли недостатки в использовании крепления для привязки?

Как насчет резервного копирования / var / lib / docker / volume / напрямую?

В процессе поиска я нашел это сообщение в блоге owncloud [2], в котором предлагается выполнить резервное копирование / var / lib / docker / volume / owncloud_files / _data напрямую. Мне это кажется не самым чистым способом.

Однако, имея дело с нынешней ситуацией, я пока думаю пойти этим путем. Это безопасно? (Конечно, в отношении необходимых мер предосторожности для согласованности, например, выключение контейнера базы данных, режим обслуживания owncloud и т. Д. - которые, я думаю, необходимы в любом случае для упомянутых здесь решений !?)

[1] https://docs.docker.com/storage/volumes/

[2] https://owncloud.org/news/docker-series-pt-3-automatically-easily-backup-restore-dockerized-owncloud/

К тому же я все равно не пользуюсь другими преимуществами объемов. Или я что-то упускаю? Есть ли недостатки в использовании крепления для привязки?

Кажется, я понимаю, что Docker хочет, чтобы вы забыли о существовании хоста; и на самом деле, иногда у вас не будет к нему доступа, поэтому тома - наиболее очевидный способ сохранить данные.

Привязка монтирования - это путь на хосте, поэтому вы должны каким-то образом «управлять» им (выделять пространство, монтировать раздел ...) вне из Докера. Возможно, у вас уже есть система для этого, например, плейбук Ansible, который устанавливает Docker, docker-compose и загружает docker-compose.yml к серверу. Но если вы этого не сделаете, или вы просто укажете docker-compose удаленному демону Docker, ну, вы захотите использовать только это, и ничего больше: тогда вам понадобятся данные в томах.

Как насчет резервного копирования / var / lib / docker / volume / напрямую?

Я согласен, что это не очень хорошая идея: это собственное пространство Docker, я бы не стал его трогать, как я бы не копировал из /var/lib/postgresql на работающем экземпляре.

Или я что-то упускаю?

Почему бы тебе не убежать borg вместо того tar внутри вашего временного контейнера?