温馨提示×

centos docker怎样备份数据

小樊
37
2026-09-26 23:20:46
栏目: 智能运维

在 CentOS 上使用 Docker 备份数据,常见做法取决于数据存放在哪里。下面按场景给你最实用的方法。


一、备份 Docker 卷(Volume)数据(推荐方式)

如果你是用 docker run -v 卷名:/data 或 docker-compose 的 volumes 管理的,这是最规范的备份方式。

1️⃣ 查看卷

docker volume ls

2️⃣ 备份某个卷(如 mysql_data)

docker run --rm \
  -v mysql_data:/volume \
  -v /backup:/backup \
  alpine \
  tar czf /backup/mysql_data_$(date +%F).tar.gz -C /volume .

✅ 备份文件在宿主机:/backup/mysql_data_2026-01-21.tar.gz


3️⃣ 恢复卷数据

docker run --rm \
  -v mysql_data:/volume \
  -v /backup:/backup \
  alpine \
  tar xzf /backup/mysql_data_2026-01-21.tar.gz -C /volume

二、备份宿主机目录挂载的数据

如果你是:

-v /data/mysql:/var/lib/mysql

直接备份宿主机目录即可:

tar czf /backup/mysql_$(date +%F).tar.gz /data/mysql

恢复:

tar xzf /backup/mysql_2026-01-21.tar.gz -C /

⚠️ 建议先停止容器再备份,避免数据不一致。


三、数据库容器专用备份(重要)

MySQL / MariaDB

docker exec mysql_container \
  sh -c 'mysqldump -uroot -p密码 数据库名' \
  > /backup/db_$(date +%F).sql

PostgreSQL

docker exec pg_container \
  pg_dump -U postgres dbname \
  > /backup/db_$(date +%F).sql

✅ 数据库必须用语逻辑备份,不能只拷贝文件。


四、备份整个容器(不推荐但可用)

docker commit 容器名 备份镜像
docker save 备份镜像 > /backup/image.tar

⚠️ 不包含 volume 数据,只适合配置型容器。


五、自动化备份(crontab 示例)

crontab -e
0 3 * * * docker run --rm -v mysql_data:/volume -v /backup:/backup alpine tar czf /backup/mysql_$(date +\%F).tar.gz -C /volume .

六、备份建议总结

场景 推荐方式
Docker Volume alpine + tar
挂载目录 tar
数据库 mysqldump / pg_dump
容器配置 docker commit

如果你能告诉我:

  • 用的 什么服务(MySQL?Nginx?WordPress?)
  • CentOS 版本
  • 数据是怎么挂载的

我可以直接给你一套可复制的备份脚本。

0 踩