Я использую несколько контейнеров Docker на трех машинах, составляющих кластер Swarm.
Некоторые контейнеры, в которых хранятся постоянные данные (например, DB, Redis и т. Д.), Используют тома данных.(Я старался по возможности избегать использования bind-mount)
Такие тома данных находятся в / var / lib / docker / volume /, и каждому тому присваивается индивидуальное имя, а не случайная последовательность.Идентификатор:
# ls /var/lib/docker/volumes/
redis-data postgres-data fluentd-data ...
Я хочу выполнять резервное копирование этих томов периодически, например, ежедневно, чтобы я мог восстановить их после сбоя компьютера и исправить его позже.
Однако каждый документ, который я нашел вGoogle проиллюстрировал способ использования нового контейнера Linux и tar
:
https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes
$ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
Почему?Есть ли проблема, если я просто заархивирую каталог /var/lib/docker/volumes/VOLUME
и скопирую его на другой компьютер?Например, права доступа, uid, gid и т. Д.?
$ tar -zcvf redis.tgz /var/lib/docker/volumes/redis-data
PS
В некоторых случаях резервное копирование с использованием tar
может привести к несогласованности данных из-за изменений данных во время архивирования.,Например, архивирование каталога данных БД, когда БД еще работает и выполняется insert
с или update
с ... Но я думаю, что эта проблема применяется к обоим подходам одинаково.