让我们了解每个标志的语法:
1. -v 或 –volume:它有三个字段,由 (:) 分隔。第一个字段是卷的名称,第二个字段是我们要挂载卷的容器中文件或文件夹的路径,第三个是可选的,指定挂载文件的访问模式。我们必须在此选项中正确遵循字段顺序。
下面是示例:
命令:
-v my-vol:/etc/:ro
上例中’my-vol’为卷名,’/etc/’为容器内部文件夹,访问方式为只读。
2、–mount:有键值对,用逗号隔开。
此选项中使用以下键:
- type:此项指定挂载的类型,如绑定、卷或 tmpfs。在这里,我们正在讨论 Docker 卷,因此挂载的类型将是卷。
- source:指定挂载的来源,即主机上的任意路径;但是,对于命名卷,我们指定了卷的名称。它可能被指定为“source”和“src”。
- destination:它指定了我们要在容器中挂载文件或目录的路径。它可以指定为“destination”、“dst”或“target”。
- volume-opt:这个选项可以多次使用;它还采用键值对,它由选项名称及其值组成。
- volume-driver:我们可以使用此选项指定卷驱动程序。
docker 卷挂载的示例
以下是 Docker Volume 的示例:
场景:我们会先创建一个卷并验证它,然后我们将检查新创建的卷的所有详细信息。然后我们将这个卷挂载到一个容器,然后在我们挂载卷的位置在容器中创建一个测试文件。然后我们将相同的卷挂载到不同的容器并检查那里的测试文件以验证它是否按预期工作。让我们开始吧。
1.创建一个名为“my-vol”的新卷并如下列出。
docker volume create my-vol
docker volume ls
输出:

2.使用“inspect”命令检查该卷的所有详细信息,如下所示:
命令:
docker volume inspect my-vol
输出:

说明: “Mountpoint”是文件或文件夹实际存储的位置。所以如果我们浏览那个位置,现在什么都没有。我们将在将数据安装到任何容器后填充数据;然后,如果我们浏览此位置,我们将在此处获取我们在容器中的安装位置创建的文件或文件夹。
3.现在,使用“-v”标志将此卷挂载到容器并使用“docker exec”命令连接到容器,创建一个新的测试文件“test.txt”。停止并删除此容器并创建一个新容器并将相同的卷连接到此容器。再次执行这个新容器并检查文件在这个新创建的容器中是否可用,如下所示:
命令:
$docker run -d -v my-vol:/root --name my-cont alpine sleep 3600
$docker exec -it my-cont sh (Note: - we can use container ID as well.)
/ # cd /root
~ # echo “This is a test file” > test.txt
~ # cat test.txt
~ # exit
$docker container stop my-cont && docker container rm my-cont
$docker run -d --mount source=my-vol,target=/etc/ --name my-cont2 alpine sleep 3600
$docker exec -it my-cont2 sh
/ # cat /etc/test.txt
/ # exit
输出:

说明: 在上面的快照中,我们可以看到即使在第一个容器被销毁后文件仍然可用。
4.如果我们想查看上面的文件而不像第 2 点的解释中讨论的那样将其挂载到任何容器,那么我们必须浏览卷的“Mountpoint”,如下所示:
命令:
sudo cat /var/lib/docker/volumes/my-vol/_data/test.txt

5.假设这个卷不再需要,可以删除;我们可以使用“rm”命令,如下所示:
命令:
docker volume rm my-vol
注意:我们只有在没有使用的情况下才能删除卷;否则,我们需要使用“-f”选项。
输出:

docker container rm my -cont2

6.如果有多个卷需要删除,我们使用’prune’命令一次性删除所有未使用的卷,如下所示:
docker volume prune

说明:在上面的示例中,我们创建了 3 个新卷并且没有将任何容器附加到它们,因此我们可以使用 ‘prune’ 命令一次删除所有三个卷。
Docker Volume 的优势
- 我们可以在两种类型的容器上附加卷,无论是 Linux 容器还是 Windows 容器。
- 我们可以将卷存储在单独的主机或任何远程主机或云提供商上,加密卷的内容或使用卷驱动程序添加更多功能。
- 我们可以安全地在多个容器之间共享卷;卷的备份和迁移也很容易。
结论
Docker 卷是安全的持久存储数据的简单方法。我们还有一个用于持久存储的绑定安装;但是,与 Docker 卷相比,它的功能较少。我们已经讨论了命名卷,我们还有没有特定来源的匿名卷,一旦容器被删除,它就会被删除。
推荐文章
这是 Docker Volume 的指南。在这里,我们将讨论 docker 卷挂载及其优势以及它的示例和代码实现。
本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –