在 CentOS 上使用 Docker 时,备份通常分为几种情况:容器备份、镜像备份、数据卷备份、以及整个 Docker 环境备份。下面按常见场景给你一套实用方案。
适合:迁移环境、重装系统前保存镜像
docker images
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
适合:容器已运行,想完整保存当前状态
docker commit my_container my_backup_image
docker save -o my_backup_image.tar my_backup_image
⚠️ 注意:
- 容器里的数据卷(volume)不会自动备份
- 推荐用
docker run重新创建容器而非依赖 commit
数据都在 volume 里,必须单独备份
假设 volume 名为 mysql_data
docker run --rm \
-v mysql_data:/data \
-v /backup:/backup \
centos \
tar czf /backup/mysql_data.tar.gz -C /data .
恢复:
docker run --rm \
-v mysql_data:/data \
-v /backup:/backup \
centos \
tar xzf /backup/mysql_data.tar.gz -C /data
tar czf /backup/app_data.tar.gz /opt/app/data
适合:生产环境最常见
tar czf docker_app.tar.gz docker-compose.yml .env data
tar xzf docker_app.tar.gz
docker-compose up -d
适合:整机迁移、灾难恢复
systemctl stop docker
tar czf /backup/docker_full.tar.gz /var/lib/docker
systemctl stop docker
rm -rf /var/lib/docker
tar xzf /backup/docker_full.tar.gz -C /
systemctl start docker
✅ 镜像:docker save
✅ 数据:volume tar 或数据库 dump
✅ 配置:docker-compose.yml
✅ 定时任务:crontab + rsync
如果你愿意,可以告诉我:
我可以给你一套可直接用的备份脚本。