温馨提示×

如何备份debian docker

小樊
35
2026-10-02 03:07:36
栏目: 智能运维

在 Debian 上“备份 Docker”通常包含几个层面,下面我按常见场景给你一份实用指南,你可以按需选择。


一、备份 Docker 容器数据(最重要)

Docker 容器本身是无状态的,真正要备份的是数据卷(volumes)和绑定挂载目录。

1️⃣ 查看容器使用的卷

docker inspect 容器名 | grep -A 10 Mounts

2️⃣ 备份 Docker Volume

假设 volume 名为 mysql_data:

docker run --rm \
  -v mysql_data:/volume \
  -v $(pwd):/backup \
  alpine \
  tar czf /backup/mysql_data.tar.gz -C /volume .

恢复:

docker run --rm \
  -v mysql_data:/volume \
  -v $(pwd):/backup \
  alpine \
  sh -c "cd /volume && tar xzf /backup/mysql_data.tar.gz"

二、备份容器配置(可选)

1️⃣ 导出容器配置

docker inspect 容器名 > container.json

2️⃣ 提交容器为镜像(不推荐长期使用)

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

三、备份 Docker 本身(系统级)

1️⃣ 备份 Docker 数据目录(⚠️ 需停止 Docker)

systemctl stop docker
tar czf docker-backup.tar.gz /var/lib/docker
systemctl start docker

⚠️ 不推荐生产环境频繁这么做,文件很大。


四、备份 Docker Compose 项目(推荐方式 ✅)

如果你用 docker-compose:

# 备份 compose 文件和数据卷
cp docker-compose.yml ~/backup/
tar czf volumes.tar.gz ./volumes

恢复时:

docker compose up -d

五、实战示例(MySQL 容器)

docker exec mysql \
  sh -c 'mysqldump -uroot -p密码 数据库名' > db.sql

恢复:

docker exec -i mysql \
  sh -c 'mysql -uroot -p密码 数据库名' < db.sql

六、自动化备份(建议)

可用 cron:

0 3 * * * /usr/bin/docker exec mysql mysqldump -uroot -p密码 db > /backup/db_$(date +\%F).sql

总结(重点)

✅ 必须备份:数据卷 / 挂载目录
✅ 建议备份:compose 文件
⚠️ 谨慎备份:/var/lib/docker

如果你愿意,可以告诉我:

  • 你用的是 容器还是 compose
  • 跑的是什么服务(MySQL / Nginx / 自建应用)

我可以直接给你定制备份脚本。

0 踩