在 Ubuntu 上使用 Docker 时,“备份”通常分为几种情况,下面按最常见、最实用的方式给你说明。
docker commit 容器名 备份镜像名:tag
docker save -o 备份文件.tar 备份镜像名:tag
恢复:
docker load -i 备份文件.tar
docker run -d --name 新容器 备份镜像名:tag
⚠️ 不推荐长期使用,数据可能不完整。
docker run 备份 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"
✅ 这是生产环境最安全的方式。
/var/lib/dockersudo systemctl stop docker
sudo tar czf docker_backup.tar.gz /var/lib/docker
sudo systemctl start docker
恢复:
sudo systemctl stop docker
sudo rm -rf /var/lib/docker
sudo tar xzf docker_backup.tar.gz -C /
sudo systemctl start docker
⚠️ 风险较高,仅适合整机迁移。
project/
├── docker-compose.yml
├── data/
tar czf project_backup.tar.gz project/
✅ 配合 Git 管理 docker-compose.yml 最好。
docker exec mysql \
mysqldump -uroot -p密码 数据库名 > db.sql
docker exec postgres \
pg_dump -U user dbname > db.sql
0 3 * * * docker run --rm -v vol:/volume -v /backup:/backup alpine tar czf /backup/vol_$(date +%F).tar.gz -C /volume .
| 场景 | 推荐方式 |
|---|---|
| 数据库 | mysqldump / pg_dump |
| 应用数据 | volume 备份 |
| 整机迁移 | /var/lib/docker |
| 日常使用 | docker-compose + volume |
如果你能告诉我:
我可以直接给你可复制的备份脚本。