通过实例理解Docker Volumes

  • 通过实例理解Docker Volumes已关闭评论
  • 66 views
  • A+
所属分类:未分类

对于Docker,数据将存储在容器内。当我们删除容器时,数据将丢失。在本指南中,我们将学习如何创建docker卷,如何将其连接到容器以及如何在两个或多个容器中共享同一卷来存储数据。

  • 为什么我们需要Docker卷?

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

    我们可以对数据和容器进行逻辑划分。我们可以通过以下方式保存数据:如果我们删除
    容器,那么我们的数据也将存在。因此,在销毁容器之后,我们可以将卷附加到任何现有容器以及新容器上。

    Docker Volumes入门

docker volume命令,使我们可以创建一个卷的卷命令的详细信息,检查有关可用卷的卷的详细数据,列表,删除卷。

# docker volume

通过实例理解Docker Volumes

创建 Docker Volumes

创建 docker volume 的语法为:

docker volume create <volume_name>

例如:

# docker volume create devops_volume

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

通过实例理解Docker Volumes

列出 docker volumes

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

# docker volume ls

通过实例理解Docker Volumes

检查Docker卷

docker volume inspect 命令会给你创造的音量,位置,名称和范围的细节。

语法:

docker volume inspect <volume_name>

让我向您展示名为devops_volume的Docker卷的详细信息。

# docker volume inspect devops_volume

通过实例理解Docker Volumes

创建具有自定义卷的容器

语法:

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

通过实例理解Docker Volumes

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

通过实例理解Docker Volumes

启动容器

要启动新创建的容器,例如myBusyBox1,请运行:

# docker container start myBusyBox1

通过实例理解Docker Volumes

如上图所示,容器myBusyBox1已在8分钟前创建,并在6秒前启动。

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

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

我们已经创建了一个名为myBusyBox1的容器。让我们创建另一个,例如myBusyBox2

通过实例理解Docker Volumes

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

让我们连接到第一个容器,并在/ app文件夹中创建一个文件。

# docker exec -it myBusyBox1 sh

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

然后,在/ app文件夹中创建一个名为devops的新文件夹,并从第一个容器退出。

通过实例理解Docker Volumes

现在,将文件(例如index.html)从本地系统复制到myBusyBox1容器的位置/ app / devops /中。

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

现在连接到另一个容器myBusyBox2,并验证/ app / devops文件夹中是否存在index.html文件。

# docker exec -it myBusyBox2 sh

通过实例理解Docker Volumes

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

我们可以使用docker volume inspect命令检查卷的Mountpoint位置,如下所示:

# docker volume inspect devops_volume

通过实例理解Docker Volumes

如您所见,安装点位置为/var/lib/docker/volumes/devops_volume/_data

让我们转到安装点位置,查看复制的文件是否可用。

通过实例理解Docker Volumes

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

删除Docker卷

删除卷的语法为:

docker volume rm <volume_name>

让我们删除名为devops_volume的卷

# docker volume rm devops_volume

通过实例理解Docker Volumes

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

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

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

然后删除该卷

# docker volume rm devops_volume

通过实例理解Docker Volumes

一次删除所有卷

使用docker rm命令,我们可以一次删除一个卷。如果我们有多个卷,并且要删除所有卷,则必须使用prune命令。

让我们创建一些卷:

通过实例理解Docker Volumes

现在,使用以下命令一次删除所有卷:

# docker volume prune

通过实例理解Docker Volumes

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

  • 安卓客户端下载
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar