手记

备份Docker卷的4个简单方法

如果你使用 Docker 不只是玩玩的话,你很可能已经在使用卷(数据卷)了。卷很棒,但也很容易搞砸并丢失数据,所以我们要学习备份方法。不要措手不及,让我们来看看如何备份 Docker 数据卷吧!

应用相关的

你可能恨死我说这话了,但最好的办法是别备份Docker卷,相反,只备份你需要的数据,用你手头的工具就行。

如果你使用的是 Postgres,你可以简单地使用 pg_dump 命令来备份你的数据库。如果你使用的是 MongoDB,你可以使用 mongodump 命令。这些命令通常会给你更多的控制权,决定备份哪些内容,并且甚至可以提供一些正常备份无法提供的数据一致性保障。如果可能,请使用适合的工具来完成工作!

也存在一些现有的容器解决方案,它们封装了如 pg_dump 等工具,使操作更加简便。例如,Kartoza 的 docker-pg-backup 项目。

创建备份可以简单到只需运行一个命令即可。

    docker run --name="backups"  --link db:db -v `pwd`/backups:/backups  -d kartoza/pg-backup:$POSTGRES_MAJOR_VERSION-$POSTGIS_MAJOR_VERSION.${POSTGIS_MINOR_RELEASE}

全屏模式 退出全屏

本地备份

接下来是一个很多人可能不会认为是备份的东西,但如果你做一些本地的开发工作且不需要非常健壮的解决方案,它就足够好了。

如果你的卷叫 my-data,你可以把所有内容复制到一个叫 my-data-backup 的新数据卷里。

    docker volume create --name 我的数据备份

    # 创建一个名为我的数据备份的docker卷
    docker container run --rm -it \
               -v 我的数据:/from \
               -v 我的数据备份:/to \
               ubuntu bash -c "cd /from ; cp -av . /to"

    # 运行一个容器,复制数据从源目录到备份目录

全屏退出 全屏进入

这会创建一个与原卷数据完全一致的新卷。然后你就可以用这个新卷来做备份啦!你可能还需要根据你要备份的内容来调整/from/to路径哦。祝你备份顺利!

请记住,这不能保护你免于遇到像服务器烧毁这样的灾难 🤖🔥。

主机服务商

如果你使用像SliplaneRender这样的现代PaaS提供商,你可以直接使用他们的备份功能。这样就方便多了,如果你不想操心备份的问题,但是这也可能成为一个单一的故障源,并且可能会有额外的费用。

例如,Sliplane 提供生产服务器的免费容量备份,对容量大小没有限制。

先说一句:我是联合创始人之一,所以我当然这么觉得啦 😆

将文件通过 Offen 上传到 S3.

.zh: Offen 是一个自托管的备份服务,可以备份到多种不同的云提供商,比如 S3。只需要一个简单的命令就可以备份 Docker 卷

运行 Docker 容器,并执行备份操作:
docker run --rm \
  -v data:/backup/data \
  --env AWS_ACCESS_KEY_ID="<xxx>" \
  --env AWS_SECRET_ACCESS_KEY="<xxx>" \
  --env AWS_S3_BUCKET_NAME="<xxx>" \
  --entrypoint backup \
  offen/docker-volume-backup:v2
其中,`<xxx>` 需要替换为实际的 AWS 访问密钥 ID、秘密访问密钥和 S3 存储桶名称。

进入全屏,退出全屏

Offen很不错,我们甚至在Sliplane用它来备份卷。他们不仅有很好的文档和示例,还支持多种云提供商。我建议直接备份到S3存储。一定要使用客户端加密来保护您的数据哦!

配置文档如下,请点击链接查看:here

结果

好了!这里有5种备份Docker卷的方法。选择最适合你需求的方法。如果你还有其他好方法,请在下面留言分享!

感谢您的关注,祝您备份数据顺利!

干杯,Jonas,你好
Jonas,sliplane.io 的合伙人

0人推荐
随时随地看视频
慕课网APP