Files
blog/docs/tech/Backup-and-Restore-of-Docker-Volumes-A-Step-by-Step-Guide.md
T
cattom 816336fe06
Deploy / deploy (push) Successful in 43s
Add Backrest.md
2026-03-26 16:59:39 +08:00

91 lines
2.7 KiB
Markdown

# 手把手教你备份和还原 Docker 卷
本教程将以备份 Grafana 的数据卷为例,手把手教你如何备份和还原 Docker 卷。
以下是 Grafana 的 docker-compose 配置参考:
``` yaml title="docker-compose.yml"
services:
grafana:
image: grafana/grafana-enterprise
container_name: grafana
ports:
- 3000:3000
volumes:
- grafana-storage:/var/lib/grafana
restart: unless-stopped
volumes:
grafana-storage:
```
## 第一步:确定准备备份的 Docker 卷
备份卷的第一步是确定要备份的卷。
我们可以通过运行以下命令来做到这一点:
``` bash
docker volume ls
```
这将显示 Docker 主机上当前可用的所有卷的列表,记得记下要备份的卷名称。
```
DRIVER VOLUME NAME
local 3-buyvm-lv_grafana-storage
...
```
在本次演示中,`3-buyvm-lv_grafana-storage` 将是我们将要备份的卷。
## 第二步:创建 Docker 卷的备份
要创建 Docker 卷备份,可以使用 `docker run` 命令启动一个容器,挂载要备份的卷,并将备份数据写入压缩包。
``` bash
docker run --rm \
--mount source=<volume-name>,target=<target> \
-v $(pwd):/backup \
busybox \
tar -czvf /backup/<backup-filename>.tar.gz <target>
```
在该命令中,用要备份的卷的名称替换 `<volume-name>`,用 docker 容器内的挂载点替换 `<target>`,用备份文件的名称替换 `<backup-filename>`。
依照上面的命令,我们备份 `3-buyvm-lv_grafana-storage` 的命令便要这样写:
``` bash
docker run --rm \
--mount source=3-buyvm-lv_grafana-storage,target=/var/lib/grafana \
-v /root/backup:/backup \
busybox \
tar -czvf /backup/3-buyvm-lv_grafana-storage.tar.gz /var/lib/grafana
```
## 第三步:还原 Docker 卷
如果需要从备份中还原 Docker卷,我们可以使用 `docker run` 命令启动一个容器,挂载备份文件并将备份数据写入卷。
``` bash
docker run --rm \
--mount source=<volume-name>,target=<target> \
-v $(pwd):/backup \
busybox \
tar -xzvf /backup/<backup-filename>.tar.gz -C /
```
在该命令中,用要备份的卷的名称替换 `<volume-name>`,用 docker 容器内的挂载点替换 `<target>`,用备份文件的名称替换 `<backup-filename>`。
依照上面的命令,我们还原 `3-buyvm-lv_grafana-storage` 的命令便要这样写:
``` bash
docker run --rm \
--mount source=3-buyvm-lv_grafana-storage,target=/var/lib/grafana \
-v /root/backup:/backup \
busybox \
tar -xzvf /backup/3-buyvm-lv_grafana-storage.tar.gz -C /
```
## 参考
[Backup and Restore of Docker Volumes: A Step-by-Step Guide OSMOSYS](https://osmosys.co/blog/backup-and-restore-of-docker-volumes-a-step-by-step-guide/)