28

我刚刚在 Youtube 上浏览本教程,试图了解该-v命令的用法。

为什么作者使用-v命令?他使用命令,如下所示:

docker run -v /var/lib/mysql --name=my_datastore -d busybox echo "my datastore"

现在我在一定程度上理解了上述命令:

  • --name=my_datastore给容器一个特定的名称。
  • -d busybox基于busybox图像以分离模式启动容器。

执行命令后,以下行将回显到控制台。

my datastore 

现在,我不明白的部分如下:

-v /var/lib/mysql

为什么-v这里使用命令,为什么/var/lib/mysql指定路径?

我很难理解为什么要使用上述行以及在什么情况下使用。谁能解释一下?

4

1 回答 1

80

-v(或--volume)参数docker run用于在容器内创建与容器文件系统的其余部分分开的存储空间。命令有两种形式。

当给定一个参数时,例如-v /var/lib/mysql,这会从 Docker 分配空间并将其安装在给定位置。这主要是一种从 Docker 分配存储的方式,与您的服务容器不同。例如,您可能想要运行更新版本的数据库应用程序,这涉及拆除现有的 MySQL 容器并启动一个新容器。您希望您的数据能够在此过程中继续存在,因此您将其存储在数据库容器可以访问的卷中。

当给定两个参数(host_path:container_path )时,如主机在容器内可用)。这是一种向容器提供信息的方式,或者为容器提供一种使主机可以访问文件的方式。-v /data/mysql:/var/lib/mysql-v /etc/localtime:/etc/localtime/etc/localtime/etc/localtime

如果容器有可用的卷,通过使用-v命令行参数或通过VOLUMEDockerfile 中的指令,可以使用以下--volumes-from选项从另一个容器访问这些卷:

docker run --volumes-from my_datastore ...

这将使源容器中定义的任何卷在您开始使用的容器中可用--volumes-from

这在Docker Volumes文档中有更详细的讨论。

于 2015-08-28T11:39:52.433 回答