用示例解释 Docker 卷

如果是 码头工人,数据将存储在容器内。 而当我们移除容器时,数据就会丢失。 在本指南中,我们将学习如何创建 docker 卷、如何将其附加到容器以及如何在两个或多个容器之间共享相同的卷以存储数据。

如果您还不了解 docker 基础知识,请参阅以下指南:

  • 开始使用 Docker

为什么我们需要 Docker 卷?

  • 删除容器时,卷不会被删除。
  • 将卷附加或分离到容器。
  • 在不同容器之间共享卷(存储/数据)。
  • 将容器与存储分离。
  • 将卷存储在远程主机或云上。

我们可以对数据和容器进行逻辑划分。 我们可以以某种方式保存数据,如果我们删除
容器然后我们的数据也将出现。 因此,在销毁容器后,我们可以将卷附加到任何现有容器以及新容器。

Docker 卷入门

泊坞窗卷 命令将显示卷命令的详细信息,我们可以通过这些命令创建卷、检查卷的详细数据、列出可用卷并删除卷。

# docker volume

显示“docker volume”命令的帮助部分

创建 Docker 卷

创建 docker 卷的语法是:

docker volume create <volume_name>

例子:

# docker volume create devops_volume

上面的命令将创建一个名为 devops_volume.

创建泊坞窗卷

列出 docker 卷

要列出所有创建的 docker 卷,请运行:

# docker volume ls

列出泊坞窗卷

列出泊坞窗卷

检查 docker 卷

码头工人卷检查 命令将为您提供有关创建卷、位置、名称和范围的详细信息。

句法:

docker volume inspect <volume_name>

让我向您展示一个名为的 docker 卷的详细信息 devops_volume.

# docker volume inspect devops_volume

检查 docker 卷

检查 docker 卷

创建容器并附加卷

句法:

docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>

例子:

# docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox

创建一个附有卷的容器

创建一个附有卷的容器

要验证容器是否已创建,请使用 码头工人ps -a 命令:

docker ps 命令

“docker ps”命令输出

启动容器

要启动新创建的容器,对于 example 我的忙箱1, 跑:

# docker container start myBusyBox1

启动容器

启动 docker 容器

正如您在上面的屏幕截图中看到的,容器 myBusyBox1 已在 8 分钟前创建并在 6 秒前启动。

从共享卷在容器之间复制文件

让我们创建一个场景,我们将在共享位置的一个容器中创建文件,并尝试从另一个容器访问该文件。

我们已经创建了一个名为 myBusyBox1 的容器。 让我们创造另一个,因为 example 我的忙箱2.

创建一个容器

创建一个容器

现在我们有两个处于运行状态的容器,myBusyBox1 和 myBusyBox2。

让我们连接到第一个容器并在里面创建一个文件 /应用程序 文件夹。

# docker exec -it myBusyBox1 sh

上面的命令将带你进入容器。

然后,创建一个名为 开发运维 在 /app 文件夹中并从第一个容器中退出。

连接到第一个容器

连接到第一个容器

现在,复制一个文件,对于 example 索引.html从本地系统到位置 /app/devops/ myBusyBox1 容器。

# docker container cp index.html myBusyBox1:/app/Devops

现在连接到另一个第二个容器,即 我的忙箱2 并验证里面 /app/devops 文件夹 索引.html 文件是否存在。

# docker exec -it myBusyBox2 sh

连接到第二个容器

连接到第二个容器

从上面的屏幕截图可以确认两个容器共享相同的卷。

我们可以使用检查卷的挂载点位置 码头工人卷检查 命令如下:

# docker volume inspect devops_volume

docker 检查卷命令

docker 检查卷命令

如您所见,挂载点位置是 /var/lib/docker/volumes/devops_volume/_data.

让我们去挂载点位置,看看复制的文件是否可用。

docker 卷挂载点

docker 卷挂载点

在 Mountpoint 位置,我们找到了相同的文件。

删除 docker 卷

删除卷的语法是:

docker volume rm <volume_name>

让我们删除名为 devops_volume.

# docker volume rm devops_volume

删除 docker 卷

删除 docker 卷

在上面的屏幕截图中,我们正在尝试删除该卷但无法删除,因为该卷已在使用中。 所以首先我们需要杀死容器并释放体积。 然后我们可以删除该卷。

为此,首先使用命令删除所有正在运行的容器:

# docker rm –f $(docker ps -aq)

然后删除卷:

# docker volume rm devops_volume

删除 docker 卷

删除 docker 卷

一次删除所有卷

使用 码头工人 命令,我们可以一次删除一个卷。 如果我们有多个卷并且想要删除所有卷,那么我们必须使用 修剪 命令。

让我们创建几个卷:

创建 docker 卷

创建 docker 卷

现在使用命令一次删除所有 docker 卷:

# docker volume prune

一次删除所有 docker 卷

一次删除所有 docker 卷

看? 我们一口气删除了所有卷。

建议阅读:

  • 解释 Docker 网络概念
  • 如何自动更新正在运行的 Docker 容器
  • ctop – Linux 容器的命令行监控工具
  • Portainer – 管理 Docker 的最简单方法
  • PiCluster – 一个简单的、基于 Web 的 Docker 管理应用程序
  • Dockly – 从终端管理 Docker 容器

关于作者:

德鲁夫·蒂瓦里 是一名 DevOps 工程师,他喜欢自动化事物,大规模地使用 Linux,并梦想有一天系统足够智能,无需登录 Linux 机器。 CI/CD 从源代码到代码部署再到生产的旅程。

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!