温馨提示×

ubuntu docker怎样备份

小樊
33
2026-09-19 11:47:45
栏目: 智能运维

在 Ubuntu 上使用 Docker 时,备份通常分为容器数据备份镜像备份卷(Volume)备份compose 项目备份。下面按常见场景给你一套实用方案。


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

1️⃣ 使用 Docker Volume(推荐方式)

如果你把数据放在 volume 里:

docker volume ls

备份某个 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 \
  tar xzf /backup/mysql_data.tar.gz -C /volume

2️⃣ 容器里直接打包数据

如果数据在容器内部(不推荐但常见):

docker cp 容器名:/data ./data_backup

或导出容器文件系统:

docker export 容器名 > container.tar

⚠️ export 不包含 volume 数据


二、备份 Docker 镜像

导出镜像

docker save nginx:latest > nginx.tar

导入镜像

docker load < nginx.tar

三、备份正在运行的容器(含配置)

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

⚠️ 不推荐长期使用,仅应急


四、Docker Compose 项目备份

一般只需要备份:

  • docker-compose.yml
  • .env
  • 挂载目录(volumes / bind mounts)

示例:

tar czf myapp_backup.tar.gz \
  docker-compose.yml \
  .env \
  data/

五、整机 Docker 备份(简单粗暴)

Docker 默认数据目录:

/var/lib/docker

停止 Docker 后备份:

sudo systemctl stop docker
sudo tar czf docker_backup.tar.gz /var/lib/docker
sudo systemctl start docker

⚠️ 占用空间大,仅适合迁移


六、自动化备份(示例脚本)

#!/bin/bash
DATE=$(date +%F)
docker run --rm \
  -v mysql_data:/volume \
  -v /backup:/backup \
  alpine \
  tar czf /backup/mysql_$DATE.tar.gz -C /volume .

加 crontab:

0 3 * * * /root/backup.sh

七、推荐备份策略 ✅

项目 推荐方式
数据库 volume + 数据库 dump
配置文件 git / 压缩包
镜像 docker save
生产环境 定期 + 异地备份

如果你告诉我:

  • 用的是 MySQL / PostgreSQL / Redis?
  • 是否使用 docker-compose?
  • 本地备份还是云备份?

我可以给你一套可直接用的备份脚本

0