在Debian系统上,Docker的备份恢复需覆盖镜像、容器、卷、网络及数据目录五大核心元素,以下是具体操作步骤及注意事项:
镜像是容器的基础,需通过docker save命令导出为tar文件:
# 列出所有镜像,确认需备份的镜像名称及标签
docker images
# 导出指定镜像(如my-image:latest)到tar文件
docker save -o my-image-backup.tar my-image:latest
说明:若需备份所有镜像,可通过docker images -q获取所有镜像ID,循环执行docker save。
容器是镜像的运行实例,需先提交为镜像再导出,或直接导出文件系统:
# 列出所有容器(包括停止的),获取容器ID
docker ps -a
# 提交容器为新的镜像(如my-container备份为my-container-backup)
docker commit <容器ID> my-container-backup:latest
# 导出镜像到tar文件
docker save -o my-container-backup.tar my-container-backup:latest
docker export -o my-container-fs-backup.tar <容器ID或名称>
说明:方法一更适合需要保留镜像完整历史的场景,方法二适合快速备份文件系统。
卷是容器数据持久化的核心,需通过docker cp或直接备份卷数据目录:
docker cp命令(适用于小数据量)# 列出所有卷,获取卷名称
docker volume ls
# 复制卷数据到主机备份目录(如my-volume备份到/backup/my-volume)
docker cp <卷名称>:/ /backup/my-volume
# 获取卷的宿主机数据路径(如my-volume的路径为/var/lib/docker/volumes/my-volume/_data)
docker volume inspect <卷名称> --format '{{ .Mountpoint }}'
# 使用tar压缩备份
sudo tar -czvf /backup/my-volume-backup.tar.gz $(docker volume inspect <卷名称> --format '{{ .Mountpoint }}')
说明:卷备份是恢复数据的关键,务必定期执行。
Docker网络无直接备份命令,需备份网络配置文件:
# 备份/etc/docker/network目录到tar文件
sudo tar -czvf docker-networks-backup.tar.gz /etc/docker/network
说明:网络配置文件包含网络驱动、IPAM等信息,恢复时需还原此文件。
Docker的所有数据(镜像、容器、卷元数据等)默认存储在/var/lib/docker,可通过tar命令完整备份:
# 停止Docker服务(避免备份过程中数据不一致)
sudo systemctl stop docker
# 备份数据目录到压缩文件(包含日期时间戳)
sudo tar -czvf /backup/docker-data-$(date +%Y%m%d%H%M%S).tar.gz /var/lib/docker
# 启动Docker服务
sudo systemctl start docker
说明:此方法适合全量备份,恢复时可快速还原整个Docker环境。
通过docker load命令导入tar文件:
# 导入镜像
docker load -i my-image-backup.tar
# 验证镜像是否存在
docker images
# 从备份的镜像启动新容器(如my-container-restored)
docker run -d --name my-container-restored -p 8080:80 my-image-backup:latest
# 导入容器文件系统为镜像
cat my-container-fs-backup.tar | docker import - my-container-restored:latest
# 启动容器
docker run -d --name my-container-restored -p 8080:80 my-container-restored:latest
docker cp还原# 将备份的数据复制回卷
docker cp /backup/my-volume <卷名称>:/data
# 创建新卷
docker volume create my-volume-restored
# 解压备份数据到卷的宿主机路径
sudo tar -xzvf /backup/my-volume-backup.tar.gz -C $(docker volume inspect my-volume-restored --format '{{ .Mountpoint }}')
还原网络配置文件并重启Docker服务:
# 复制配置文件到/etc/docker/network
sudo tar -xzvf docker-networks-backup.tar.gz -C /
# 重启Docker服务使配置生效
sudo systemctl restart docker
若备份了/var/lib/docker,可直接解压覆盖:
# 停止Docker服务
sudo systemctl stop docker
# 解压备份文件到数据目录
sudo tar -xzvf /backup/docker-data-YYYYMMDDHHMMSS.tar.gz -C /
# 启动Docker服务
sudo systemctl start docker
通过以上步骤,可实现Debian系统下Docker环境的完整备份与恢复,确保业务数据安全。