docker数据持久化以及备份和还原
  eCzDQ3mUTle2 2023年11月13日 32 0

为什么需要数据持久化?

Docker 中的容器是临时的,并且通常设计为无状态的,这意味着容器在删除或重新创建后,其中的数据会被清除。然而,许多应用程序需要持久化存储数据,以便数据不会丢失,并且在容器重新创建后仍然可用。数据持久化还有助于在多个容器之间共享数据,或者将数据备份到宿主机或远程存储中

常见的 Docker 数据持久化方法

以下是 Docker 中常见的数据持久化方法:

  1. 数据卷(Volumes):数据卷是一种特殊的目录,可以绕过容器文件系统并将数据存储在宿主机上。数据卷可以被一个或多个容器共享,并且在容器之间持久存在。使用数据卷可以方便地备份、恢复和迁移数据。
  2. 绑定挂载(Bind Mounts):绑定挂载允许将宿主机上的文件或目录直接挂载到容器中。这样,容器可以访问宿主机文件系统中的数据,并且对数据的修改也会反映到宿主机上。
  3. 命名卷(Named Volumes):命名卷是一种具有名称的数据卷,可以在多个容器之间共享,并且可以方便地管理和使用。通过为卷指定名称,可以在创建容器时直接引用该名称,并且 Docker 会自动创建和管理卷。
  4. 数据卷容器(Data Volume Containers):数据卷容器是一种特殊类型的容器,用于存储和管理数据卷。其他容器可以通过 --volumes-from 选项挂载这些数据卷容器,从而实现数据的共享和持久化。

使用数据卷进行数据持久化

数据卷是 Docker 中实现数据持久化的一种常见方法,它允许容器将数据存储在宿主机上的特定目录中可以绕过容器文件系统并将数据存储在宿主机上。数据卷可以被一个或多个容器共享,并且在容器之间持久存在。使用数据卷可以方便地备份、恢复和迁移数据。可以通过在Dockerfile或者命令行中使用 -v 选项来创建和使用数据卷

创建数据卷

docker volume create my_data_volume

docker数据持久化以及备份和还原_IT

查看数据卷

docker volume ls

docker数据持久化以及备份和还原_IT_02

使用数据卷

在运行容器时,可以使用 -v--mount 参数来将数据卷挂载到容器内的指定路径

docker run -v my_data_volume:/app/data <image>

数据卷的特性

  • 数据卷可以在容器之间共享数据。
  • 数据卷可以在容器运行时进行备份、恢复和迁移。
  • 数据卷的生命周期独立于容器的生命周期。即使删除容器,数据卷仍然存在

删除容器重新创建

docker数据持久化以及备份和还原_运维_03

再次创建tomcat容器,创建的666文件依然存在

docker数据持久化以及备份和还原_运维_04

使用绑定挂载进行数据持久化

绑定挂载允许将宿主机上的文件或目录直接挂载到容器中。这样,容器可以访问宿主机文件系统中的数据,并且对数据的修改也会同步到宿主机上。

使用绑定挂载

在运行容器时,使用 -v--mount 参数指定要挂载的宿主机路径和容器路径。

docker run -v /var/data:/app/data <image>

将宿主机上的 /var/data 目录挂载到容器内的 /app/data 目录

绑定挂载的特性

  • 绑定挂载允许容器与宿主机之间共享数据。
  • 对绑定挂载路径的更改会直接反映到宿主机上。
  • 宿主机上的文件和目录权限和属性会直接应用到容器中

使用命名卷进行数据持久化

命名卷是一种具有名称的数据卷,可以在多个容器之间共享,并且可以方便地管理和使用。以下是使用命名卷进行数据持久化的步骤:

第一步:创建命名卷

命令创建一个命名卷:

docker volume create --name my_named_volume

上面命令创建了一个 my_named_volume 的命名卷。可以使用 docker volume ls 命令查看所有数据卷列表

第二步:挂载命名卷到容器

运行容器时,使用 -v 选项将命名卷挂载到容器中的特定路径:

docker run -d -v my_named_volume:/path/in/container <image>

这将把 my_named_volume 命名卷挂载到容器的 /path/in/container 目录。容器中的数据将被持久化存储在命名卷中

使用数据卷容器进行数据持久化

数据卷容器是一种特殊类型的容器,用于存储和管理数据卷。其他容器可以通过 --volumes-from 选项挂载这些数据卷容器,从而实现数据的共享和持久化。以下是使用数据卷容器进行数据持久化的步骤:

第一步:创建数据卷容器

首先,创建一个专门用于存储数据的数据卷容器:

docker create -v /data --name data_container <image>

上述命令将创建一个名为 data_container 的数据卷容器,并将 /data 目录指定为数据卷的挂载点。

第二步:将数据卷容器挂载到其他容器

然后,在需要持久化数据的容器中,通过 --volumes-from 选项将数据卷容器挂载进来:

docker run -d --volumes-from data_container <image>

通过这样的方式,容器将共享数据卷容器中的 /data 目录,从而实现数据的持久化

docker数据卷的备份和还原

数据备份方法

docker run  --volumes-from [container name] -v $(pwd):/backup centos tar czvf /backup/backup.tar [container data volume]

数据还原方法

docker run --volumes-from [container name] -v $(pwd):/backup centos tar xzvf /backup/backup.tar.gz [container data volume]
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   30   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   31   0   0 Docker
  DnoStTHsc0vp   2023年12月11日   24   0   0 Docker
eCzDQ3mUTle2