"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}],
...
在以上示例中,有两个挂载卷,一个是在
docker run创建容器时创建的,而另一个是在创建运行容器镜像的Dockerfile文件中通过VOLUME指令创建。其中,Source表示宿主机源文件位置,Destination表示数据卷在容器中的挂载位置,而RW表示卷是否可读/写。1.3 挂载本地数据到容器数据卷
在前面示例中,我们运行容器时并没有指定要挂载到容器中数据卷的本地目录,所在Docker使用一个默认数据目录。
-v参数除了可以在容器中创建数据卷外,还可以将宿主机中的目录挂载到容器中的数据卷。如,运行容器,并将本地的~/code/itbilu目录挂载到容器的/home/itbilu数据卷上:
$ sudo docker run -t -i -v ~/code/itbilu:/home/itbilu --name test itbilu/test /bin/bas注意:挂载本地目录到容器内的挂载目录时,如果容器内的数据卷中已经存在数据,那么本地内容将与数据卷中的数据重叠,而不会删除数据。
其中,容器目录必须使用绝对路径,而本地目录可以使用绝对路径或其它形式。
挂载共享存储
除了可以载挂本地目录到容器数据卷外,一些Docker卷插件让你可以挂载共享存储到容器的数据卷,如:iSCSI、NFS、FC。使用共享卷的好处是它们是独立于主机的,这意味着,只要有访问共享存储权限,并安装插件,就可以在任何容器上启动卷。
详细参考:
Mount a shared-storage volume as a data volume
挂载本地文件到容器数据卷
-v参数不仅可挂载目录,还可以挂载单个文件。如:
$ sudo docker run -t -i -v ~/.bash_history:/root/.bash_history
--name test itbilu/test /bin/bash以上会把本地的~/.bash_history文件挂载到新容器中,这样你就可以在容器内访问宿主上的bash历史记录。
二、数据卷容器
如果你有一些要在容器之间共享的持久性数据,或者希望在非持久容器中使用,那么最好创建一个命名的数据卷容器,然后从其挂载数据。
接下来,我们创建一个新的命名的共享容器。这个容器不运行一个应用程序,它利用training/postgres镜像在所有的容器之间创建了一个共享层,以节省磁盘空间。
$ sudo docker create -v /dbdata --name dbstore training/postgres /bin/true注意:training/postgres是Docker 官方文档中提供的一个镜像,本文拿来直接使用了。










