Docker 命名卷与 DOC(数据专用容器)


Docker 提供了多种在容器中存储数据的方法。两种流行的选择是命名卷和 DOC(数据专用容器)。在本文中,我们将比较这两种选项,并讨论何时使用其中一个比另一个更合适。

什么是 Docker 命名卷?

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目录中的任何数据都将持久化到命名卷中,即使容器停止或删除也是如此。

命名卷有一些优点 -

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

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

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

但是,使用命名卷也有一些缺点 -

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

  • 如果卷数量众多,则它们可能难以管理和维护

什么是 Docker DOC(数据专用容器)?

DOC(数据专用容器)是使用不同方法在 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 run命令的--volumes-from标志。例如 -

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

在此示例中,data-container DOC 中的数据被挂载到busybox容器。存储在data-container/app/data目录中的任何数据都将可用于busybox容器。

DOC 有一些优点 -

  • 它们允许您将数据与容器分离,从而更容易管理和维护

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

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

但是,使用 DOC 也有一些缺点 -

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

  • 它们不如命名卷可移植,因为它们需要存在于使用它们的每个主机上

  • 它们不如命名卷易于使用,因为它们需要额外的步骤才能将数据挂载到其他容器

实现

以下是创建数据专用容器的实现。

步骤 1 - 创建一个用作卷的容器。

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

步骤 2 - 运行一个连接数据容器 3 的容器

$ 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 卷存在。

命名卷和 DOC 的比较

那么,哪种数据存储选项更好 - 命名卷或 DOC?答案最终取决于您的特定需求和用例。以下是一些帮助您做出决定的注意事项 -

特性

命名卷

DOC(数据专用容器)

配置

不需要额外的配置

需要创建和配置单独的数据专用容器

可移植性

它可以与同一主机上的任何容器一起使用

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

数据管理

数据存储在容器内,并且在卷数量众多时可能难以管理

数据与容器分离,使其更易于管理

共享

可以在同一主机上的多个容器之间共享

只要 DOC 存在,它就可以在任何主机上的多个容器之间共享

易用性

简单易用

需要额外的步骤才能将数据挂载到其他容器

偏好

对于特定任务,是否首选 Docker 命名卷或 DOC 将取决于具体的要求和用例。在决定使用哪种数据存储选项时,请考虑以下事项 -

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

  • 如果您需要更灵活、更可移植的数据存储选项,则 DOC 可能是您的选择。只要 DOC 存在,它们就可以在任何主机上使用,并且它们允许您将数据与容器分离以进行更轻松的管理。

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

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

最终,最适合您的数据存储选项将取决于您的特定需求和用例。请考虑您的需求并选择最适合您的选项。

结论

总之,命名卷和 DOC 都是用于在 Docker 容器中存储数据的有用选项。哪一个最适合您将取决于您的特定需求和用例。命名卷简单易用,而 DOC 则更灵活并允许更好地管理数据。请考虑您的需求并选择最适合您的选项。

更新于: 2023 年 1 月 16 日

2K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告