# 手把手教你备份和还原 Docker 卷 本教程将以备份 Grafana 的数据卷为例,手把手教你如何备份和还原 Docker 卷。 以下是 Grafana 的 docker-compose 配置参考: ``` 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=,target= \ -v $(pwd):/backup \ busybox \ tar -czvf /backup/.tar.gz ``` 在该命令中,用要备份的卷的名称替换 ``,用 docker 容器内的挂载点替换 ``,用备份文件的名称替换 ``。 依照上面的命令,我们备份 `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=,target= \ -v $(pwd):/backup \ busybox \ tar -xzvf /backup/.tar.gz -C / ``` 在该命令中,用要备份的卷的名称替换 ``,用 docker 容器内的挂载点替换 ``,用备份文件的名称替换 ``。 依照上面的命令,我们还原 `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/)