在 CentOS 上使用 Docker 备份数据,常见有几种方式,取决于你用的是容器卷(volume)、绑定挂载(bind mount)还是数据库容器。下面按场景给你整理一份实用指南。
docker ps
docker inspect 容器名 | grep -i mount
通常数据在:
/var/lib/docker/volumes/xxx/_datadocker run --rm \
-v 你的volume名:/data \
-v /backup:/backup \
centos \
tar czf /backup/volume-backup.tar.gz -C /data .
恢复:
docker run --rm \
-v 你的volume名:/data \
-v /backup:/backup \
centos \
tar xzf /backup/volume-backup.tar.gz -C /data
cd /var/lib/docker/volumes/你的volume名/_data
tar czf /backup/volume-backup.tar.gz .
⚠️ 不推荐在容器运行时直接操作
docker exec mysql容器 \
mysqldump -uroot -p密码 数据库名 > /backup/mysql.sql
恢复:
docker exec -i mysql容器 \
mysql -uroot -p密码 数据库名 < /backup/mysql.sql
docker exec postgres容器 \
pg_dump -U 用户 数据库名 > /backup/pg.sql
docker commit 容器名 备份镜像
docker save 备份镜像 > /backup/container.tar
⚠️ 不包含 volume 数据
crontab -e
示例(每天 2 点):
0 2 * * * docker run --rm -v vol:/data -v /backup:/backup centos tar czf /backup/$(date +\%F).tar.gz -C /data .
/var/lib/docker如果你能告诉我:
我可以给你一套直接可执行的脚本。