温馨提示×

Docker在Debian上的备份与恢复方法

小樊
52
2025-10-14 15:23:46
栏目: 智能运维

Docker在Debian上的备份与恢复方法

一、备份方法

1. 镜像备份

使用docker save命令将镜像保存为可传输的.tar文件,适用于镜像的跨系统迁移或长期存储。
操作步骤

docker save -o <镜像文件名.tar> <镜像名>:<标签>
# 示例:备份名为"myapp"、标签为"latest"的镜像
docker save -o myapp.tar myapp:latest

2. 容器备份

容器是镜像的运行实例,备份容器需先将其保存为镜像,再导出为.tar文件。
操作步骤

  • 将容器提交为新镜像
    docker commit <容器ID或名称> <备份镜像名>:<标签>
    # 示例:提交名为"mycontainer"的容器为"mycontainer_backup:latest"
    docker commit mycontainer mycontainer_backup:latest
    
  • 保存镜像为tar文件
    docker save -o <备份文件名.tar> <备份镜像名>:<标签>
    # 示例:保存"mycontainer_backup:latest"为"mycontainer_backup.tar"
    docker save -o mycontainer_backup.tar mycontainer_backup:latest
    

3. 卷备份

卷用于持久化容器数据(如数据库文件、日志),需直接备份卷内的数据目录。
操作步骤

  • 列出所有卷
    docker volume ls
    
  • 备份卷数据到主机
    docker cp <卷名>:/<卷内路径> <主机备份目录>
    # 示例:备份名为"mydata"的卷到主机的"/mnt/backup/mydata"
    docker cp mydata:/ /mnt/backup/mydata
    

4. 网络备份

Docker网络(如bridge、overlay)无直接备份命令,需备份其配置文件以实现网络恢复。
操作步骤

tar -czvf docker-networks.tar.gz /etc/docker/network
# 示例:将网络配置打包为"docker-networks.tar.gz"

5. 完整数据备份(可选)

若需备份整个Docker环境(包括镜像、容器、卷、配置),可直接备份Docker的数据目录和配置文件。
操作步骤

  • 停止Docker服务(避免数据不一致):
    sudo systemctl stop docker
    
  • 备份数据目录(默认路径/var/lib/docker):
    sudo tar -czvf /backup/docker-data-$(date +%Y%m%d).tar.gz /var/lib/docker
    
  • 备份配置文件(默认路径/etc/docker):
    sudo tar -czvf /backup/docker-config-$(date +%Y%m%d).tar.gz /etc/docker
    
  • 重启Docker服务
    sudo systemctl start docker
    

二、恢复方法

1. 镜像恢复

使用docker load命令将.tar文件加载为本地镜像。
操作步骤

docker load -i <镜像文件名.tar>
# 示例:恢复"myapp.tar"中的镜像
docker load -i myapp.tar

2. 容器恢复

从备份的镜像创建新容器,需指定容器名称和端口映射(可选)。
操作步骤

docker run -d --name <新容器名> [-p 主机端口:容器端口] <镜像名>:<标签>
# 示例:从"mycontainer_backup:latest"创建名为"mycontainer_restored"的容器
docker run -d --name mycontainer_restored mycontainer_backup:latest

3. 卷恢复

将主机备份的卷数据复制回对应的Docker卷目录。
操作步骤

docker cp <主机备份目录> <卷名>:/<卷内路径>
# 示例:将主机"/mnt/backup/mydata"复制到卷"mydata"的根目录
docker cp /mnt/backup/mydata mydata:/

4. 网络恢复

将备份的网络配置文件复制回/etc/docker/network目录,并重启Docker服务。
操作步骤

tar -xzvf docker-networks.tar.gz -C /  # 解压到根目录
sudo systemctl restart docker         # 重启Docker使配置生效

5. 完整数据恢复(可选)

若需恢复整个Docker环境,需先停止服务,再覆盖数据目录和配置文件,最后重启服务。
操作步骤

  • 停止Docker服务
    sudo systemctl stop docker
    
  • 恢复数据目录
    sudo tar -xzvf /backup/docker-data-$(date +%Y%m%d).tar.gz -C /
    
  • 恢复配置文件
    sudo tar -xzvf /backup/docker-config-$(date +%Y%m%d).tar.gz -C /
    
  • 重启Docker服务
    sudo systemctl start docker
    

三、注意事项

  1. 服务状态:备份前建议停止相关容器(尤其是数据库容器),避免数据不一致;恢复网络配置前需重启Docker服务。
  2. 备份存储:备份文件应存放在安全位置(如外部硬盘、云存储),并定期验证备份完整性。
  3. 跨平台兼容性:若镜像在不同架构(如ARM与x86)间迁移,需确保目标系统支持该镜像的架构。
  4. 数据持久化:容器内数据应优先存储在卷或绑定挂载目录(如-v /主机目录:/容器目录),而非容器内部,避免容器删除导致数据丢失。
  5. 备份频率:根据数据重要性设置备份频率(如每日、每周),并保留多个历史备份版本。

0