当前位置: 首页 > 知识库问答 >
问题:

如何备份Docker-container及其数据卷?

於乐
2023-03-14

我一直在使用这个Docker-image Tutum/Wordpress来演示一个Wordpress网站。最近,我发现该映像使用了mysql数据的卷。

所以问题是这样的:如果我想备份和恢复容器,我可以尝试提交一个映像,然后删除容器,并从提交的映像创建一个新的容器。但如果我这样做了,卷就会被删除,我的所有数据都没有了。

一定有一些简单的方法来备份我的容器加上它的卷数据,但我在任何地方都找不到。

共有1个答案

柳俊逸
2023-03-14

如果我想还原容器,我可以尝试提交一个映像,然后删除容器,并从提交的映像创建一个新容器。但如果我这样做了,卷就会被删除,我的所有数据都消失了

正如docker用户指南所解释的那样,数据卷意味着将数据持久化到容器文件系统之外。这也简化了多个容器之间的数据共享。

虽然Docker永远不会删除卷中的数据(除非使用Docker rm-v删除关联的容器),但未被任何Docker容器引用的卷称为悬空卷。那些悬空的卷很难摆脱,也很难访问。

这意味着,一旦删除了使用卷的最后一个容器,数据卷就会变得悬空,并且难以访问其内容。

为了防止这些悬空卷,诀窍是使用您想要持久化的数据卷创建一个附加的docker容器,以便始终至少有那个docker容器引用该卷。这样,您就可以删除运行wordpress应用程序的docker容器,而不会失去访问该数据量内容的便利性。

这样的容器称为数据量容器。

一定有一些简单的方法来备份我的容器加上卷数据,但我在任何地方都找不到。

要备份docker映像,请使用docker save命令,该命令将生成一个tar存档文件,以后可以使用docker load命令创建一个新的docker映像。

您可以通过不同的方法备份docker容器

  • 通过使用docker commit命令根据docker容器当前状态提交新的docker映像
  • 通过使用docker export命令将docker容器文件系统导出为tar存档。稍后,您可以使用docker import命令从该tar存档中创建新的docker映像。

请注意,这些命令将只备份docker容器分层文件系统。这不包括数据卷。

要备份数据卷,可以使用要备份的卷运行新容器,并执行tar命令以生成卷内容的存档,如docker用户指南中所述。

在您的特定情况下,数据卷用于存储MySQL服务器的数据。因此,如果您想为这个卷导出一个tar存档,您将需要首先停止MySQL服务器。为此,您必须停止wordpress容器。

另一种方法是远程连接到MySQL服务器,使用mysqldump命令生成数据库转储。但是,为了使其正常工作,您的MySQL服务器必须配置为接受远程连接,并且还必须有一个允许远程连接的用户。您正在使用的wordpress docker图像可能不是这种情况。

Docker最近推出了Docker卷插件,允许将卷的处理委托给供应商实现的插件。

Docker run命令具有-v选项的新行为。现在可以向它传递卷名。以这种方式创建的卷被命名,便于以后引用,从而缓解了卷悬空的问题。

Docker引入了Docker volume Prune命令来轻松删除所有悬空卷。

 类似资料:
  • 如何访问postgres-docker container其他docker container没有ip地址?我想通过使用MyWeb将数据存储在postgres中。在jar中给定主机,如localhost:5432/db。 这是我的作曲文件:

  • 正确的方法是什么?我是不是只是抄了这本书。sq3文件? 如果网站上有用户,并且在复制文件时正在编写文件,该怎么办?

  • 本文向大家介绍MySQL数据库备份以及常用备份工具集合,包括了MySQL数据库备份以及常用备份工具集合的使用技巧和注意事项,需要的朋友参考一下 一、数据库备份种类 按照数据库大小备份,有四种类型,分别应用于不同场合,下面简要介绍一下: 1.1完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐

  • 在这方面有一些问题,需要一些帮助(指导)。我要备份的数据位于此处:/var/lib/docker/volumes/eb5294b586d6537c965bde61d02da06d49ff77467afdc55ec1441413fe5fb128/_data 因此,我需要创建此卷数据的备份,并将其传输到另一台主机。从本网站https://docs.docker.com/engine/tutorials

  • Docker的manager节点将Swarm的状态和日志存储在/var/lib/docker/swarm/目录下。在1.13或者更高版本中,这个目录下包含加密Raft日志的密钥。如果没有这些密钥,就没有办法恢复Swarm。 我们可以在任何一个manager节点上,按照下面的过程进行备份。 如果Swarmauto-lock设置被打开,我们需要unlock key才能进行从备份恢复。如何多的unloc

  • 我从这里按照官方的docker指南备份docker卷。我也知道这个SO问题,但是我仍然遇到错误。运行以下命令: 无论我输入什么图像名称、容器名称或容器id,都会出现以下错误: 我要备份的卷: 我的容器: 如何备份我的卷? 更新: 我尝试了以下操作,但遇到了一个新错误: