Docker named volumes与DOC仅有数据的容器的比较

Docker named volumes与DOC仅有数据的容器的比较

Docker为在容器中存储数据提供了几种选择。两个流行的选择是命名卷和DOCs(纯数据容器)。在这篇文章中,我们将比较这两种选择,并讨论何时使用其中一种可能比另一种更合适。

什么是Docker named volumes

Docker命名的卷是一种在Docker容器中保存数据的方法。它们允许你创建一个命名的卷,并将其挂载到容器上,这样即使容器被停止或删除,存储在卷中的数据也会被保留下来。

要在Docker中创建一个命名的卷,你可以使用docker volume create命令。比如说 –

$ docker volume create my-volume
my-volume

要把一个命名的卷装载到容器中,你可以在docker run命令中使用-v标志。比如说 –

$ docker run -d -v my-volume:/app/data busybox

在这个例子中,命名的卷my-volume被挂载到busybox容器的/app/data目录。任何存储在/app/data目录中的数据都将在命名的卷中持续存在,即使容器被停止或删除。

命名卷有几个优点–

  • 它们很容易使用,不需要任何额外的配置

  • 它们是可移植的,这意味着它们可以与同一主机上的任何容器一起使用。

  • 它们可以在多个容器之间共享

然而,使用命名卷也有一些缺点 –

  • 它们只能在创建它们的主机上使用。

  • 它们可能难以管理和维护,特别是当你有大量的卷宗时。

什么是DOC仅有数据的容器

DOCs(纯数据容器)是一种使用不同方法在Docker容器中存储数据的方式。你不使用一个命名的卷,而是创建一个专门用于存储数据的容器,然后根据需要将数据从该容器挂载到其他容器。

要在Docker中创建一个DOC,你可以使用docker create命令。例如 –

$ docker create -v /app/data --name data-container busybox /bin/true

在这个例子中,使用busybox镜像创建了一个名为data-container的新容器。-v标志被用来在容器中创建一个位于/app/data的卷,并且/bin/true命令被用来保持容器的运行。

要把数据从DOC挂载到另一个容器,你可以在docker运行命令中使用--volumes-from标志。比如说 —

$ docker run -itd --volumes-from data-container busybox

在这个例子中,来自data-container DOC的数据被挂载到busybox容器中。存储在数据容器的/app/data目录中的任何数据都将对busybox容器可用。

DOC有几个优点–

  • 它们允许你将数据与容器分开,使其更容易管理和维护。

  • 只要有DOC存在,它们就可以在任何主机上使用

  • 它们可以被用来在多个容器之间共享数据

然而,使用DOC也有一些缺点 —

  • 它们需要一个额外的步骤来创建和配置DOC

  • 它们不像命名卷那样容易携带,因为它们需要在使用它们的每台主机上存在。

  • 它们不像命名卷那样容易使用,因为它们需要一个额外的步骤将数据挂载到其他容器中。

实现

下面是创建纯数据容器的实现。

第1步 – 创建一个容器,作为卷使用。

$ docker create -v /DOC --name data-container3 busybox /bin/true

第2步 – 运行一个附加了data-container3的容器

$ docker run -itd --volumes-from data-container3 --name test1 busybox

进到里面,检查是否存在/DOC卷。

$ $ docker exec -it test1 sh
/ # ls
DOC    bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var

因此,DOC量是存在的。

named volumes和DOC的比较

那么,哪种数据存储选项更好–命名卷或DOC?答案最终取决于你的具体需求和使用情况。

Feature named volumes DOCs (Data-Only-Containers)
配置 不需要额外的配置 需要创建和配置单独的纯数据容器
便携性 它可以与同一主机上的任何容器一起使用 只要有DOC存在,它就可以在任何主机上使用
数据管理 数据存储在容器内,如果有大量的卷,可能难以管理 数据与容器分离,使其更容易管理
Sharing 可以在同一主机上的多个容器之间共享 只要DOC存在,它可以在任何主机上的多个容器之间共享。
使用的便利性 简单和易于使用 需要一个额外的步骤将数据挂载到其他容器上

Preference

对于一项特定的任务,是选择Docker命名的卷还是DOC,将取决于具体要求和使用情况。以下是在决定使用哪种数据存储选项时需要考虑的一些事情 –

  • 如果你想要一个简单和易于使用的数据存储选项,命名卷可能是更好的选择。它们不需要任何额外的配置,可以与同一主机上的任何容器一起使用。

  • 如果你需要一个更灵活、更便携的数据存储选项,DOC可能是你要走的路。只要DOC存在,它们就可以在任何主机上使用,而且它们允许你将数据与容器分开,以便于管理。

  • 如果你有大量的数据卷,命名的卷可能更难管理。在这种情况下,DOC可能是一个更好的选择,因为它允许你将数据与容器分开,使其更容易管理。

  • 如果你需要在多个容器之间共享数据,命名卷或DOC都可以工作。命名卷可以在同一主机上的任何容器之间共享,而DOC可以在任何容器之间共享,只要DOC存在。

最终,最适合你的数据存储选项将取决于你的具体需求和使用情况。考虑你的要求,选择最适合你的选项。

结论

总之,命名卷和DOC都是在Docker容器中存储数据的有用选择。哪一个最适合你将取决于你的具体需求和使用情况。命名的卷是简单和容易使用的,而DOCs更灵活,可以更好地管理数据。考虑到你的要求,选择最适合你的选项。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程