温馨提示×

ubuntu docker怎么备份

小樊
38
2026-09-10 08:02:12
栏目: 智能运维

在 Ubuntu 上使用 Docker 时,“备份”通常分为几种情况,下面按最常见、最实用的方式给你说明。


一、备份 Docker 容器(本质是备份镜像 + 数据)

1️⃣ 备份容器为镜像(适合临时备份)

docker commit 容器名 备份镜像名:tag
docker save -o 备份文件.tar 备份镜像名:tag

恢复:

docker load -i 备份文件.tar
docker run -d --name 新容器 备份镜像名:tag

⚠️ 不推荐长期使用,数据可能不完整。


二、备份 Docker 数据卷(最推荐 ✅)

2️⃣ 使用 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"

✅ 这是生产环境最安全的方式。


三、备份宿主机 Docker 目录(整体备份)

3️⃣ 备份 /var/lib/docker

sudo 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

⚠️ 风险较高,仅适合整机迁移。


四、Docker Compose 项目备份(推荐日常使用)

4️⃣ 备份 compose + 数据

project/
├── docker-compose.yml
├── data/
tar czf project_backup.tar.gz project/

✅ 配合 Git 管理 docker-compose.yml 最好。


五、数据库专用备份(重要 ⚠️)

MySQL

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

PostgreSQL

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

如果你能告诉我:

  • 用的什么服务(MySQL / Nginx / 自建应用)
  • 是否用 Docker Compose

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

0