volume是docker挂载空间的一种方式。
但是docker好像有另外一种挂载空间方法,比如:docker run -v /usr/local:/usr/local 这种挂载方式叫做bind方式。
为了直观,我找一个既有bind方式又有volume方式的容器。
我们查看一下他的Mounts
[root@localhost ~]# docker inspect 【container】 | grep "Mounts" -A 20
"Mounts": [
{
"Type": "volume",
"Name": "45cf0f2ba1d197b2w12312d1d323d2d32d24fe0",
"Source": "/var/lib/docker/volumes/45cf0f2ba1d197b2w12312d1d323d2d32d24fe0/_data",
"Destination": "/home/oracle/app/oracle/oradata",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "bind",
"Source": "/usr/local/oracle/data",
"Destination": "/home/oracle/data_temp",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
可以发现这个容器将宿主机的/var/lib/docker/volumes/45cf0f2ba1d197b2w12312d1d323d2d32d24fe0/_data和/usr/local/oracle/data都挂载了,而且是通过不同的方式。
其实这两种方式没有本质的区别,只是使用volume时,该空间是由docker管控,都在docker安装目录下的volumes文件夹里,并可以通过docker system sf -v 来观察其大小