VOLUME指令
1.1、VOLUME指令的作用

VOLUME是设置指令,非必需。

VOLUME指令用于指定挂载点

为什么要设置挂载点呢?

因为容器使用的是AUFS文件系统,这种文件系统不能持久化数据, 当容器被关闭(stop)后,所有的更改都会丢失。 当容器中的应用有持久化数据的需求时,我们需要将宿主机的某个目录挂载(mount)到容器的某个挂载点挂载点上,这样, 当容器被关闭(stop)后,数据不会丢失,因为数据存放在宿主机上的硬盘中,硬盘就是用来持久化数据的。

既然是要把宿主机的某个文件夹挂载(mount)到容器的某个挂载点上, 我们在Dockerfile中只使用VOLUME指令指定了挂载点, 没有指定被挂载的目录,那么被挂载的目录是哪个呢?我想你也能想到,一定是创建容器的时候,自动创建了一个文件夹,然后挂载(mount)到这个容器中的。 我们可以通过docker inspect <containerId | containerName>命令查看这个容器的信息看到。

我们知道,docker run命令有个-v参数,用于指定挂载点。 这两种方式,官方推荐使用VOLUME指令的方式指定,因为这种方式便于使用docker volume统一管理, 省的你在创建容器的时候使用一堆参数,而且便于备份和迁移这些volume

1.2、VOLUME指令的使用格式

VOLUME指令格式:

VOLUME ["mountpoint1" "mountpoint2" ...]

VOLUME指令可以一次设置多个挂载点。

示例:

VOLUME ["/opt/share" "/etc/nginx"]
VOLUME ["/opt/share"]

当,你的VOLUME指令指定的挂载点与docker run命令的-v参数指定的挂载点相同的时候, 使用-v参数指定的挂载点。也就是永远是命令的参数的优先级最高。