相同之处
都是为了将数据持久化,即当容器销毁时,数据还能永远的保存下来,不至于跟着容器一起销毁。
不同点
一 场景不同
1 volume
volume常用在Dockerfile 时使用 ,在Dockerfile 中volume后面是容器的目录,即路径。
例: VOLUME /data 这里就是绑定在容器的/data 路径下。
2 -v
-v 是在docker run -v 【宿主机的路径:容器路径】。 时进行数据卷的挂载 这里的-v 是docker run 的一个参数 。
例:docker run -v /var/run/docker.sock:/var/run/docker.sock
就是将宿主机的/var/run/docker.sock 挂载在容器的/var/run/docker.sock上。
二 挂载的卷方式
-
volume
还是继续上一个例子讲 在Dockerfile中 volume后面是容器的路径 那宿主机的路径就是默认在/var/lib/docker/volumes/ 目录下的,自动生成一个匿名卷 ;其大概最终生成的在宿主机卷是 /var/lib/docker/volumes/fd74a83eafc1042d34e861ae9d984469c0321bdd3be001c37578e3f3e9c07e0a/_data 即宿主机的这个路径与容器的/data、进行绑定 挂载 -
-v
<
还是继续上一个例子 , 很明显可以看出, 即可能显示的指定宿主机的卷与容器进行绑定 ;上一个例子中就是宿主机的/var/run/docker.sock与 容器的/var/run/docker.sock 进行显示绑定。