Рубрики
Uncategorized

Автоматизировать резервное копирование ваших томов докера

Docker — это повсеместливый инструмент для нас во время здания Offen, справедливый и открытый исходный веб-аналитики Softwa … Теги с докером, контейнерами, дежопами, Opensource.

Docker — вездесущий инструмент для нас во время строительства Offen Программное обеспечение Fair и Open Source Web Analytics. Это основополагающее для Наша настройка развития , но мы также используем его для Развертывание нашего собственного завершенного экземпляра до производства.

Одна вещь, которую мы обнаружили, было пропущенным простым и легким инструментом для принятия и управления удаленными резервными копиями объемов докера. Вот почему мы написали наш собственный инструмент под названием Offen/Docker-Gone-Backup который. В этом сообщении я хотел бы познакомить вас с инструментом и как его использовать для автоматической приема резервных копий объемов докеров в вашей собственной настройке.

Введение в докеров

Объемы Докерский способ управлять постоянными данными. В качестве самих контейнеров Docker являются эфемерными, томами могут быть установлены в файловую систему контейнера, что позволяет сохранять данные за пределами жизненного цикла контейнера. Объемы обычно используются для хранения данных базы данных или аналогичных.

Например, вот как вы будете использовать объем докеров, чтобы сохранять данные для контейнера Offen:

docker volume create offen_data
docker run -d \
  -v offen_data:/var/opt/offen \
  offen/offen:latest

В беговой контейнере данных хранится в /var/opt/Offen будет сохраняться в Offen_data Объем и можно повторно использовать в других контейнерах.

Использование Offen/Docker-Backup

Offen/Docker-Gone-Backup Предназначен для прогона в SideCared рядом с контейнером приложения и периодически взять резервные копии объемов к любому S3 Совместимое хранение (I.e. AWS S3 сама или хранилища, такие как Минио или Ceph ). Он может работать на любом графике, который вы хотите, и это также может позаботиться о Вращающиеся старые резервные копии После сконфигурированного периода удержания.

При необходимости это может временно остановить и перезапустите свои беговые контейнеры, чтобы обеспечить целостность резервного копирования.

Используя Alpine в качестве базового изображения и использование клиента Minio вместо AWS CLI для загрузки файлов на удаленное хранилище сохраняет изображение Маленький и легкий Отказ

Определение контейнера Sidecar

Самый простой способ управления такой настройкой использует Docker-Compose. Составьте файл, который поддерживает свои тома, будет выглядеть что-то подобное:

version: '3'

services:
  offen:
    image: offen/offen:latest
    volumes:
      - db:/var/opt/offen
    labels:
      - docker-volume-backup.stop-during-backup=true

    backup:
    image: offen/docker-volume-backup:v1.0.2
        # Ideally, those values should go into an `env` file or Docker secrets
        # as they contain credentials. It's easier to spell them out here
        # in the context of this tutorial though.
    environment:
            # A backup is taken each day at 2AM
            BACKUP_CRON_EXPRESSION: "0 2 * * *"
            # Backups are stored with a timestamp appended
            BACKUP_FILENAME: "offen-db-%Y-%m-%dT%H-%M-%S.tar.gz"
            # Backups older than 7 days will be pruned.
            # If this value is not given, backup will be kept forever.
            BACKUP_RETENTION_DAYS: "7"
            # Credentials for your storage backend
            AWS_ACCESS_KEY_ID: ""
            AWS_SECRET_ACCESS_KEY: ""
            AWS_S3_BUCKET_NAME: "my-backups"
            # If given, backups are encrypted using GPG
            GPG_PASSPHRASE: ""
    volumes:
            # This allows the tool to stop and restart all
            # containers labeled as docker-volume-backup.stop-during-backup
      - /var/run/docker.sock:/var/run/docker.sock:ro
            # All volumes mounted to /backup/ will be backed up
      - db:/backup/offen-db:ro

volumes:
  db:

Конечно, вы также можете использовать изображение с помощью командных команд Docker:

docker volume create offen_data
docker run -d \
  -v offen_data:/var/opt/offen \
  -l docker-volume-backup.stop-during-backup=true
  offen/offen:latest
docker run -d \
  -v offen_data:/backup/offen-db:ro \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --env-file backup.env \
  offen/docker-volume-backup:v1.0.2

Запуск вручную резервную копию

Вместо того, чтобы запустить резервные копии на регулярном расписании, вы также можете выполнить команду в запущенном контейнере самостоятельно:

docker exec  backup

Восстановление объема из резервного копирования

Чтобы восстановить из резервной копии, загрузите и разверните файл резервного копирования и скопируйте его содержимое обратно в объем докера, используя один выключенный контейнер, созданный для только что цели:

docker run -d \
  --name backup_restore \
  -v offen_data:/backup_restore
  alpine
docker cp  backup_restore:/backup_restore
docker stop backup_restore && docker rm backup_restore

Объем теперь готов к использованию в других контейнерах. Альтернативно, вы можете использовать один выключенный громкость, созданный заранее.

Больше информации

Подробная документация и исходный код доступен на Репозиторий GitHub и в Docker Hub. . Исходный код лицензирован под публичной лицензией Mozilla 2.0.

Упаковка

Зная, что у вас есть удаленные резервные копии в случае неожиданных глюков инфраструктуры помогает двигаться вперед с уверенностью и не слишком беспокоиться. Я надеюсь, что эта статья продемонстрировала, что добавление их в вашу настройку Docker — это только вопрос настройки дополнительного контейнера, а также помогает вам пойти с вашими резервными копиями, чтобы вы могли двигаться вперед с вашим продуктом.

Написано кольцо Фредерика

Оригинал: «https://dev.to/hendr_ik/automate-backing-up-your-docker-volumes-3gdk»