Docker学习路线5-数据持久化

49 阅读3分钟

架构师必备Docker快速部署提升课程 下栽: www.sanzhishu.top/404.html


image.png

Docker 可以运行隔离的容器,包括应用程序和其依赖项,与主机操作系统分离。默认情况下,容器是临时的,这意味着容器中存储的任何数据在终止后都将丢失。为了解决这个问题并在容器生命周期内保留数据,Docker 提供了各种数据持久化方法。

  • Docker 卷
  • 绑定挂载
  • *Docker tmpfs 挂载

临时文件系统

默认情况下,Docker 容器内的存储是短暂的,这意味着容器内部进行的任何数据更改或修改只会持续到容器运行的时间。一旦容器停止并移除,所有相关的数据都将丢失。这是因为 Docker 容器的本质是无状态的。

这种临时或短暂的存储称为"临时容器文件系统"。这是 Docker 的一个重要特性,因为它能够在不考虑容器状态的情况下,在不同的环境中快速、一致地部署应用程序。

任何存储在容器的临时文件系统中的数据在容器停止或移除时都会丢失,这对应用程序的数据持久性构成了挑战。对于像数据库这样需要在多个容器生命周期中保持数据持久性的应用程序,这是特别有问题的。

为了克服这些挑战,Docker 提供了几种数据持久性的方法,例如:

  • :Docker 管理的存储选项,存储在容器的文件系统之外,允许数据在容器重新启动和删除时持久化。
  • tmpfs 挂载:内存中的存储,适用于仅需要在容器生命周期内持久化数据的情况。

通过实施这些策略,Docker 确保应用程序数据可以在单个容器的生命周期之外得以保留,使得可以处理有状态的应用程序。

卷挂载(Volume Mounts)

卷挂载是将主机系统上的文件夹或文件映射到容器内部的文件夹或文件的一种方式。这使得即使容器被删除,数据仍然可以在容器外部保持。此外,多个容器可以共享同一个卷,使得容器之间的数据共享变得容易。

要在Docker中创建一个卷,您需要运行以下命令:

docker volume create my-volume

此命令将创建名为 my-volume的卷。您可以使用以下命令查看创建的卷的详细信息:

docker volume inspect my-volume

要将卷挂载到容器中,您需要在运行容器时使用 -v --mount标志。以下是一个例子:

使用 -v标志:

docker run -d -v my-volume:/data your-image

使用 ** --mount**标志:

docker run -d --mount source=my-volume,destination=/data your-image

在上面的两个示例中, my-volume 是我们之前创建的卷的名称, /data是卷将被挂载到容器内的路径。

要在多个容器之间共享卷,只需在多个容器上挂载相同的卷即可。以下是如何在运行不同映像的两个容器之间共享 my-volume的示例:

docker run -d -v my-volume:/data1 image1docker run -d -v my-volume:/data2 image2

在此示例中, image1 image2 将可以访问存储在 my-volume中的相同数据。

要删除卷,您可以使用 ** docker volume rm**命令后跟卷名称:

docker volume rm my-volume

这就是卷挂载在Docker中的基本知识。您可以使用它们高效且安全地在容器之间持久化和共享数据。

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

看完如果觉得有帮助,欢迎 点赞、收藏关注

关注夏壹分享发送:资源 获取深入讲解JVM虚拟机课程