在 CentOS 上备份 Docker,通常分为 备份镜像、容器、数据卷、Docker 配置 几个部分。下面按实际运维场景给你一套常用方案。
docker images
docker save -o nginx.tar nginx:latest
docker save -o images.tar nginx:latest mysql:5.7 redis:6
docker load -i images.tar
✅ 适合:系统重装、迁移服务器
注意:容器本身不推荐直接备份,推荐用“提交为镜像”的方式
docker commit my_nginx my_nginx_backup
docker save -o my_nginx_backup.tar my_nginx_backup
docker load -i my_nginx_backup.tar
docker run -d --name my_nginx my_nginx_backup
✅ 适合:自定义容器(装了很多东西)
docker volume ls
docker run --rm \
-v mysql_data:/data \
-v /backup:/backup \
busybox \
tar czf /backup/mysql_data.tar.gz -C /data .
docker run --rm \
-v mysql_data:/data \
-v /backup:/backup \
busybox \
tar xzf /backup/mysql_data.tar.gz -C /data
✅ 数据库必须这么备份
/var/lib/docker
⚠️ 不推荐直接 cp,除非 Docker 已停止
systemctl stop docker
tar czf docker_backup.tar.gz /var/lib/docker
systemctl start docker
如果你用 docker-compose:
/your/project
├── docker-compose.yml
├── .env
└── data/
直接备份整个目录:
tar czf project_backup.tar.gz /your/project
恢复:
docker-compose up -d
✅ 最推荐方式
#!/bin/bash
DATE=$(date +%F)
docker save -o /backup/images_$DATE.tar $(docker images -q)
tar czf /backup/volumes_$DATE.tar.gz /var/lib/docker/volumes
加 crontab:
0 3 * * * /root/backup_docker.sh
| 内容 | 是否必须 | 方法 |
|---|---|---|
| 镜像 | ✅ | docker save |
| 容器 | ⚠️ | commit |
| 数据卷 | ✅✅ | tar + volume |
| compose | ✅ | 直接备份目录 |
| Docker 本身 | ❌ | 停止后备份 |
如果你能告诉我:
我可以给你一套 完全定制化的备份方案。