首页主机资讯Docker在Debian中的备份与恢复怎么做

Docker在Debian中的备份与恢复怎么做

时间2025-11-25 09:57:04发布访客分类主机资讯浏览1053
导读:Docker在Debian中的备份与恢复 一、备份范围与准备 明确需要保护的对象:持久化数据(Docker 卷)、镜像、容器可写层(若有重要运行时文件)、以及编排与配置(如 docker-compose.yml、/etc/docker/d...

Docker在Debian中的备份与恢复

一、备份范围与准备

  • 明确需要保护的对象:持久化数据(Docker 卷)、镜像、容器可写层(若有重要运行时文件)、以及编排与配置(如 docker-compose.yml/etc/docker/daemon.json)。
  • 选择备份时机:为保证一致性,数据库等有状态服务建议先停止或置于维护模式;对允许短暂中断的场景,可先停止相关容器再备份。
  • 准备存储与保留策略:选择本地磁盘、NFS、对象存储或异地备份,并设定保留周期与校验机制(如校验和/定期恢复演练)。

二、按对象备份与恢复

  • 镜像
    • 备份:将镜像导出为 tar 归档
      • 命令:docker save -o my-image.tar my-image:tag
    • 恢复:从归档加载镜像
      • 命令:docker load -i my-image.tar
  • 容器可写层或目录
    • 备份:将容器内目录复制到主机
      • 命令:docker cp < 容器名或ID> :/var/www/html /host/backup/html
    • 恢复:将主机备份复制回容器
      • 命令:docker cp /host/backup/html < 容器名或ID> :/var/www/html
  • Docker 卷
    • 备份:先定位卷的挂载点,再复制到主机
      • 步骤:
        • docker volume ls
        • docker volume inspect < 卷名> | grep Mountpoint(得到宿主机路径)
        • sudo cp -a < Mountpoint> /host/backup/vol_< 卷名>
    • 恢复:将备份数据复制回卷挂载点或在运行容器时挂载备份目录为数据卷
      • 方式A(重建卷数据):sudo cp -a /host/backup/vol_< 卷名> < Mountpoint>
      • 方式B(运行容器时挂载):docker run -v /host/backup/vol_< 卷名> :/var/lib/mysql ...
  • 编排与配置
    • 备份:保存应用编排文件与 Docker 配置
      • 命令:
        • cp docker-compose.yml /host/backup/
        • sudo cp /etc/docker/daemon.json /host/backup/(如有)
  • 整机的 Docker 数据目录(重装或迁移 Docker 引擎时使用)
    • 备份:归档 /var/lib/docker
      • 命令:sudo tar -czvf docker_backup.tar.gz -C /var/lib/docker .
    • 恢复:在新环境安装 Docker 后解压到相同路径
      • 命令:sudo tar -xzvf docker_backup.tar.gz -C /var/lib/docker
    • 说明:此方式会连同镜像、容器、卷和网络等一起迁移,需确保版本兼容与停机窗口。

三、自动化与注意事项

  • 自动化备份脚本示例
    • 作用:批量备份镜像、卷、容器可写层与关键配置,便于定时执行与异地拷贝。
    • 示例:
      #!/usr/bin/env bash
      set -e
      BACKUP_DIR="/host/backup/$(date +%F_%H-%M-%S)"
      mkdir -p "$BACKUP_DIR"
      
      # 1) 镜像
      docker images --format '{
      {
      .Repository}
      }
      :{
      {
      .Tag}
      }
          ' | while IFS= read -r img;
           do
        [[ -z "$img" ]] &
          &
           continue
        docker save -o "$BACKUP_DIR/$(echo "$img" | tr '/:' '_').tar" "$img"
      done
      
      # 2) 卷
      docker volume ls -q | while IFS= read -r vol;
       do
        mp=$(docker volume inspect -f '{
      {
      .Mountpoint}
      }
          ' "$vol")
        [[ -z "$mp" ]] &
          &
           continue
        sudo cp -a "$mp" "$BACKUP_DIR/vol_$vol"
      done
      
      # 3) 容器可写层(按需选择路径)
      docker ps -q | while IFS= read -r cid;
       do
        name=$(docker inspect -f '{
      {
      .Name}
      }
      ' "$cid" | sed 's,^/,,')
        docker cp "$cid:/var/www/html" "$BACKUP_DIR/${
      name}
          _html" 2>
          /dev/null || true
      done
      
      # 4) 配置
      sudo cp /etc/docker/daemon.json "$BACKUP_DIR/" 2>
          /dev/null || true
      cp docker-compose.yml "$BACKUP_DIR/" 2>
          /dev/null || true
      
      echo "Backup finished: $BACKUP_DIR"
      
    • 建议:配合 cron 定时执行,并将备份目录同步到远程存储或对象存储。
  • 注意事项
    • 一致性:数据库等请先停写或使用应用层备份工具;对一致性要求高的卷,优先在宿主机层面执行快照或使用卷插件能力。
    • 版本与兼容性:跨大版本恢复 Docker 数据目录可能不兼容;镜像/卷跨平台迁移需确保架构一致(如 amd64/arm64)。
    • 安全性:备份文件含敏感数据,建议加密并限制访问权限;传输到远端时使用 scp/rsync over SSH 或对象存储的加密功能。
    • 校验与演练:定期做恢复演练与校验(如对比文件数量/校验和),验证备份可用性。

四、进阶 热迁移与近零停机

  • 适用场景:需要在运行中迁移容器或做快速回滚时,可考虑基于 CRIU 的 Checkpoint/Restore 能力实现“热迁移/热备份”。
  • 要点:
    • 在主机安装并验证 CRIU 支持(criu check),确保内核与 Docker 版本满足要求。
    • 通过 Docker 的实验性 C/R 功能对容器做检查点保存,再在目标主机恢复,实现近零停机迁移或快速回滚。
    • 该方式对应用与内核特性有一定要求,生产使用前务必充分测试。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Docker在Debian中的备份与恢复怎么做
本文地址: https://pptw.com/jishu/755291.html
Docker在Debian中的常见问题及解决方法有哪些 Debian如何利用Docker部署应用

游客 回复需填写必要信息