在 CentOS 上使用 Docker 备份容器,常见有 三种方式,根据你的需求选择:
适合:迁移、保存容器当前状态
docker ps -a
docker commit 容器名或ID 备份镜像名:标签
示例:
docker commit my_nginx my_nginx_backup:20260121
docker save -o my_nginx_backup.tar my_nginx_backup:20260121
docker load -i my_nginx_backup.tar
docker run -d --name my_nginx my_nginx_backup:20260121
✅ 优点:简单、完整
❌ 缺点:不包含 volume 数据(见下)
适合:数据库、配置文件等持久化数据
docker inspect 容器名 | grep Mounts -A 20
docker run --rm -v 容器数据卷:/data -v /backup:/backup busybox \
tar czf /backup/data.tar.gz /data
或直接在宿主机:
cp -r /var/lib/docker/volumes/卷名/_data /backup/
docker export 容器ID > container.tar
恢复:
docker import container.tar 新镜像名
❌ 会丢失元数据、端口、环境变量
commit 镜像 + 备份 volume
docker commit my_app my_app:bak
docker save -o my_app.tar my_app:bak
tar czf app_data.tar.gz /var/lib/docker/volumes/my_app_data
如果你愿意,可以告诉我:
docker-compose我可以给你一套 CentOS 脚本方案。