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 來觀察其大小