【问题标题】:Backup for docker WITHOUT using volumes不使用卷的 docker 备份
【发布时间】:2019-01-13 11:47:48
【问题描述】:

我知道使用 docker 时的一般智慧是将数据移出容器并改用卷。

但我正在尝试创建一个提供一键式、完全容器化安装方法的系统,并且说“你应该先在你的计算机上安装 mongodb”不是一个选项。

所以当前的解决方案是将数据本身保存在容器中(例如 MongoDB),但我现在正在寻找不时备份容器本身快照的方法,以便我可以立即生成当一个人倒下时,从头开始一个相同的容器。

我怎样才能做到这一点?

【问题讨论】:

  • 如何使用卷不是一键式的过程?
  • > 说“你应该先在你的计算机上安装 mongodb”不是一个选项。您不必安装 mongodb 来保存带有 mongodb 数据的卷。

标签: docker kubernetes docker-compose containers


【解决方案1】:

如果您不想使用卷,您可以使用docker commit --change "added some changes to my container" <container_id> repo/image:tag在特定时间保存您的容器

新镜像将包含您当前容器的所有文件系统。

话虽如此,不使用音量有几个缺点:

默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着:

数据在该容器不再运行时不会保留,并且可能如果另一个进程需要数据,则很难从容器中取出数据。 容器的可写层与运行容器的主机紧密耦合。您无法轻松地将数据移动到其他地方。 写入容器的可写层需要存储驱动程序来管理文件系统。存储驱动程序提供了一个联合文件系统,使用 Linux 内核。与使用直接写入主机文件系统的数据卷相比,这种额外的抽象会降低性能

所以你最好的选择是使用音量! 现在您可以选择不同的种类:

  • 绑定挂载
  • 命名卷

虽然绑定挂载依赖于主机的目录结构,但卷完全由 Docker 管理。与绑定挂载相比,卷有几个优点:

卷比绑定挂载更容易备份或迁移。 您可以使用 Docker CLI 命令或 Docker API 管理卷。 卷适用于 Linux 和 Windows 容器。 卷可以在多个容器之间更安全地共享。 卷驱动程序允许您将卷存储在远程主机或云提供商上,以加密卷的内容或添加其他功能。 新卷的内容可以由容器预先填充。

阅读文档以更好地了解卷的功能:https://docs.docker.com/storage/volumes/

【讨论】:

    【解决方案2】:

    您可以轻松地导出和导入 docker 容器。

    在 tar 文件中导出整个容器

    docker export docker_container_name > latest.tar
    

    导入 Docker 容器并运行它

    cat exampleimage.tar | docker import - exampleimagelocal:new
    

    有用的链接-Docker exportDocker Import

    如果要导出Docker镜像,那么

    docker save -o image.tar Docker_Image_Name
    

    导入 Docker 镜像

    docker load -i image.tar
    

    然后运行 ​​docker 镜像。

    我认为您可以通过执行上述操作来实现,您主要需要使用第一种方法,导出 docker 容器并在需要时部署,它将包含您的旧数据。

    【讨论】:

      【解决方案3】:

      您可以使用docker commit

      使用docker commit,您可以根据容器的更改创建新图像。

      从文档中,您可以将其涵盖您的用例:

      将容器的文件更改或设置提交到 一个新的形象。这允许您通过运行 交互式外壳,或将工作数据集导出到另一台服务器。 一般来说,最好使用 Dockerfiles 来管理你的镜像。 记录和可维护的方式。阅读更多关于有效图像名称和 标签。

      提交操作不会包含卷中包含的任何数据 安装在容器内。

      【讨论】:

        【解决方案4】:

        您可以使用docker commit 从容器中拍摄快照。

        更多信息请参见post

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-06
          • 2019-06-27
          • 2023-01-10
          • 2020-04-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多