当前位置: 首页 > ai >正文

使用 docker-volume-backup 备份 Docker 卷

docker-volume-backup 是一个用于备份 Docker 卷的工具,在 Windows 10 上使用它,你可以按照以下步骤操作:

1. 确保 Docker 环境已安装并正常运行

在 Windows 10 上,你需要安装 Docker Desktop for Windows。可以从 Docker 官方网站 下载并安装 Docker Desktop。安装完成后,启动 Docker Desktop 并确保 Docker 服务正常运行。

2. 准备要备份的 Docker 卷

假设你已经有一个或多个 Docker 卷需要备份,例如一个名为 my_data_volume 的卷。

3. 编写 Docker Compose 文件

根据你的需求,你可以参考以下示例编写 Docker Compose 文件。这里提供几个不同存储后端的示例:

本地备份
version: '3'services:# 定义使用数据卷的服务my_service:image: some_image:tagvolumes:- my_data_volume:/path/in/containerbackup:image: offen/docker-volume-backup:v2.43.2environment:BACKUP_FILENAME: backup-%Y-%m-%dT%H-%M-%S.tar.gzBACKUP_LATEST_SYMLINK: backup-latest.tar.gzvolumes:- my_data_volume:/backup/my-app-backup:ro- /var/run/docker.sock:/var/run/docker.sock:ro- C:/path/to/local_backups:/archivevolumes:my_data_volume:
备份到 AWS S3
version: '3'services:my_service:image: some_image:tagvolumes:- my_data_volume:/path/in/containerbackup:image: offen/docker-volume-backup:v2.43.2environment:AWS_S3_BUCKET_NAME: your_bucket_nameAWS_ACCESS_KEY_ID: your_access_key_idAWS_SECRET_ACCESS_KEY: your_secret_access_keyvolumes:- my_data_volume:/backup/my-app-backup:ro- /var/run/docker.sock:/var/run/docker.sock:rovolumes:my_data_volume:
备份到 Azure Blob Storage
version: '3'services:my_service:image: some_image:tagvolumes:- my_data_volume:/path/in/containerbackup:image: offen/docker-volume-backup:v2.43.2environment:AZURE_STORAGE_CONTAINER_NAME: your_container_nameAZURE_STORAGE_ACCOUNT_NAME: your_account_nameAZURE_STORAGE_PRIMARY_ACCOUNT_KEY: your_primary_account_keyvolumes:- my_data_volume:/backup/my-app-backup:ro- /var/run/docker.sock:/var/run/docker.sock:rovolumes:my_data_volume:

4. 运行 Docker Compose

将上述 Docker Compose 文件保存为 docker-compose.yml,然后在包含该文件的目录下打开 PowerShell 或命令提示符,运行以下命令启动备份服务:

docker-compose up -d

这将在后台启动备份服务,按照配置的时间间隔(如果有配置)定期进行备份。

5. 手动触发备份(可选)

如果你想手动触发一次备份,可以使用 Docker CLI 运行以下命令:

docker run --rm \-v my_data_volume:/backup/data \--env AWS_ACCESS_KEY_ID="your_access_key_id" \--env AWS_SECRET_ACCESS_KEY="your_secret_access_key" \--env AWS_S3_BUCKET_NAME="your_bucket_name" \--entrypoint backup \offen/docker-volume-backup:v2.43.2

请根据你的实际情况替换相应的环境变量和卷名。

6. 查看备份结果

根据你配置的存储后端,你可以在本地目录、AWS S3 存储桶或 Azure Blob 存储容器中查看备份文件。

支持多个服务和多个数据卷的备份

以下是一个优化后的 docker-compose.yml 示例,支持多个服务和多个数据卷的备份。该方案提供了灵活的配置方式,可以针对不同数据卷设置不同的备份策略:

version: '3'services:# 应用服务 1:数据库database:image: postgres:14volumes:- db-data:/var/lib/postgresql/datalabels:- docker-volume-backup.stop-during-backup=trueenvironment:POSTGRES_PASSWORD: example# 应用服务 2:Web 服务web:image: nginx:alpinevolumes:- web-data:/usr/share/nginx/htmlports:- "80:80"# 应用服务 3:Redis 缓存redis:image: redis:alpinevolumes:- redis-data:/data# 备份服务backup:image: offen/docker-volume-backup:v2.43.2restart: alwaysenvironment:# 全局配置:备份文件命名规则BACKUP_FILENAME: "%Y-%m-%dT%H-%M-%S.tar.gz"# 全局配置:保留最近 7 天的备份BACKUP_KEEP_DAYS: 7# 全局配置:每周日凌晨 3 点执行备份BACKUP_CRON_SCHEDULE: "0 3 * * 0"# 启用详细日志BACKUP_DEBUG: "true"volumes:- db-data:/backup/database:ro- web-data:/backup/website:ro- redis-data:/backup/redis:ro- /var/run/docker.sock:/var/run/docker.sock:ro- ./backups:/archivevolumes:db-data:web-data:redis-data:

优化点说明

  1. 多数据卷支持

    • 同时备份 db-dataweb-dataredis-data 三个数据卷
    • 每个数据卷在备份容器中映射到独立的路径
  2. 灵活的备份策略

    • 使用环境变量设置全局备份策略(如备份频率、保留时间)
    • 可通过环境变量为不同卷设置独立策略(示例中使用全局配置)
  3. 容器停止控制

    • 对数据库服务添加 stop-during-backup=true 标签
    • Web 和 Redis 服务不添加该标签,备份时不会停止
  4. 本地备份管理

    • 备份文件按卷名分类存储在本地目录
    • 自动清理旧备份,节省空间
  5. 增强可维护性

    • 使用命名卷替代匿名卷
    • 分离不同类型的服务
    • 添加必要的注释说明

扩展配置示例

如果你需要为不同数据卷设置不同的备份策略,可以通过创建多个备份服务实例实现:

version: '3'services:# 主应用服务app:image: my-app:latestvolumes:- app-data:/app/data- app-logs:/app/logs# 数据库服务db:image: mysql:8.0volumes:- db-data:/var/lib/mysqllabels:- docker-volume-backup.stop-during-backup=true# 数据库备份服务(每天备份)db-backup:image: offen/docker-volume-backup:v2.43.2restart: alwaysenvironment:BACKUP_CRON_SCHEDULE: "0 2 * * *"  # 每天凌晨 2 点BACKUP_KEEP_DAYS: 14BACKUP_FILENAME: "db-%Y-%m-%dT%H-%M-%S.tar.gz"volumes:- db-data:/backup/database:ro- /var/run/docker.sock:/var/run/docker.sock:ro- ./backups:/archive# 应用数据备份服务(每周备份)app-backup:image: offen/docker-volume-backup:v2.43.2restart: alwaysenvironment:BACKUP_CRON_SCHEDULE: "0 4 * * 0"  # 每周日凌晨 4 点BACKUP_KEEP_DAYS: 30BACKUP_FILENAME: "app-%Y-%m-%dT%H-%M-%S.tar.gz"volumes:- app-data:/backup/app:ro- /var/run/docker.sock:/var/run/docker.sock:ro- ./backups:/archive# 日志备份服务(每月备份)logs-backup:image: offen/docker-volume-backup:v2.43.2restart: alwaysenvironment:BACKUP_CRON_SCHEDULE: "0 6 1 * *"  # 每月 1 日凌晨 6 点BACKUP_KEEP_MONTHS: 6BACKUP_FILENAME: "logs-%Y-%m-%dT%H-%M-%S.tar.gz"volumes:- app-logs:/backup/logs:ro- /var/run/docker.sock:/var/run/docker.sock:ro- ./backups:/archivevolumes:app-data:app-logs:db-data:

这个优化后的方案允许你:

  1. 为不同类型的数据设置不同的备份频率
  2. 对关键数据(如数据库)设置更频繁的备份
  3. 对不太重要的数据(如日志)设置更长的保留期
  4. 独立管理每个备份任务的状态和日志
http://www.xdnf.cn/news/7323.html

相关文章:

  • plc基础知识整理(三菱)
  • PHP 实现连续子数组的最大和、整数中1出现的次数
  • 详解Oracle HASH CHAIN和HASH BUCKET
  • TS04:高性能四通道自动灵敏度校准电容触摸传感器
  • 【氮化镓】关态下负栅压对 p-GaN HEMTs 单粒子效应的影响
  • 智慧招生:实时数字人在院校招生中的应用
  • 上路兵线的理解-鳄鱼篇
  • 【工具推荐】--Git详解
  • LightRAG 由入门到精通
  • CSS- 4.5 css + div 布局 简易网易云音乐 官网布置实例
  • R 语言科研绘图第 49 期 --- 热力图-相关性
  • MySQL进阶篇-InnoDB引擎(超细)
  • 大模型预训练、微调、部署、推理用到的工具总结
  • Lambda 表达式底层实现机制 vs 成员函数/静态成员函数可替代性对比
  • 易境通散货拼柜系统:提高货代企业货物配载效率
  • python打卡day30@浙大疏锦行
  • 【强化学习】#6 n步自举法
  • Blaster - Multiplayer P65-PXX : 射击武器
  • 吉林省建筑工程专业技术人员职称评审实施办法
  • (C语言)内存分配函数
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 13.几何着色器(二)爆炸效果修改图元类型
  • BIM+GIS+loT 技术在大中型水库信息化建设中的融合应用
  • [模型优化] 1. 模型转换
  • SeleniumBase - 多合一浏览器自动化框架
  • python重庆旅游系统-旅游攻略
  • CSS 单位详解:px、rem、em、vw/vh 的区别与使用场景
  • day30-模块和库的导入
  • YOLOv8 在单片机上的几种部署方案
  • 贪心算法:多处最优服务次序、删数问题
  • 【WFAS】《Wild Face Anti-Spoofing Challenge 2023: Benchmark and Results》