blog/docs/tech/Backup-and-Restore-of-Docker-Volumes-A-Step-by-Step-Guide.md
2024-07-26 02:07:14 +08:00

91 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 手把手教你备份和还原 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](https://osmosys.co/blog/backup-and-restore-of-docker-volumes-a-step-by-step-guide/)