我刚刚浏览了youtube上的 THIS 教程并试图理解使用-v命令,I.E。为什么教程中的人使用-v命令?他使用命令,就像这样,
docker run -v /var/lib/mysql --name=my_datastore -d busybox echo "my datastore"
现在我在一定程度上了解上述命令。
--name=my_datastore
为容器指定一个特定名称。
-d busybox
以上命令搜索busybox图像,如果未找到,则将其从dockerhub
拉出,然后在后台作为守护程序运行。
执行run命令后,下面的行将回显到控制台。
echo "my datastore"
现在我不理解的部分如下:
-v /var/lib/mysql
为什么这里使用-v
命令以及路径/var/lib/mysql
指定的原因?我很难理解为什么使用上述行以及在什么情况下使用?谁能解释一下?
答案 0 :(得分:16)
-v
的{{1}}(或--volume
)参数用于在容器内部创建存储空间,该容器与容器文件系统的其余部分分开。命令有两种形式。
当给出单个参数时,如docker run
,这将从Docker分配空间并将其安装在给定位置。这主要是从Docker分配来自服务容器的 distinct 存储的方法。例如,您可能希望运行较新版本的数据库应用程序,这涉及拆除现有MySQL容器并启动新容器。您希望数据在此过程中继续存在,因此您将其存储在可由tour数据库容器访问的卷中。
当给出两个参数(-v /var/lib/mysql
)时,如host_path:container_path
,这将在指定路径上的容器内的主机上安装指定目录(并且,准确地说,这也可以用于在容器中公开主机文件;例如-v /data/mysql:/var/lib/mysql
会使主机上的-v /etc/localtime:/etc/localtime
在容器内可用/etc/localtime
。这是一种向容器提供信息或为容器提供方法使主机可以访问文件的方法。
如果容器有可用卷,可以通过使用/etc/localtime
命令行参数或通过Dockerfile中的-v
指令,可以使用{{1从另一个容器访问这些卷选项:
VOLUME
这将使源容器中定义的任何卷在您使用--volumes-from
开始的容器中可用。
Managing data in containers文档中对此进行了更详细的讨论。