数据卷(volume)是存在于一个或多个容器中的特定文件或者文件夹
    特点:
    1,volume在容器创建时就会初始化,在容器运行时就可以使用其中的文件。
    2,volume能在不同的容器之间共享和重用。
    3,对volume中数据的操作会马上生效。
    4,对volume中数据的操作不会影响到镜像本身。
    5,volume的生存周期独立于容器的生存周期,即使删除容器,volume仍然会存在,没有任何容器使用的volume也不会被Docker删除。

    1,从容器挂着volume
    在使用docker run或docker create创建新容器时,可以使用-v标签为容器添加volume,例如
    docker run -d -P —name web -v /webapp training/webapp python app.py

    通过docker inspect可以查看相应的挂载信息
    数据卷 - 图1

    Source表示宿主机的文件路径,Destination表示容器的文件路径,RW表示读写权限

    注:如果进行中不存在/webapp文件夹,容器启动会将创建一个名为/webapp的空文件夹;反之,如果镜像中存在,这个文件夹中的内容将全部被复制到宿主机中对应的文件夹中,并且根据容器中的文件为宿主机中的文件设置合适的权限和所有者。

    2,从宿主机挂着volume

    在创建容器的时候可以挂载一个主机上特定的目录到容器中:
    docker run -d -P —name web -v /src/webapp:/opt/webapp training/webapp python app.py

    将宿主机中的/src/webapp文件夹作为一个volume挂载到容器中的/opt/webapp。文件夹必须使用绝对路径,如果宿主机中不存在/src/webapp,将创建一个空文件夹。在/src/webapp文件夹中的所以文件或文件夹都可以在容器的opt/webapp文件夹下被访问。如果镜像中原本存在/opt/webapp文件夹,该文件夹下原有的内容将被删除,以保持与宿主机中的文件夹一致。

    将宿主机上面的单个文件挂载到容器中:
    docker run -d -P —name web -v /src/file:/opt/file training/webapp python app.py

    将宿主机中的/src/file文件座位一个volume挂载到容器中的/opt/file。文件必须使用绝对路径,如果主机中不存在/src/file,则挂载失败。挂载后文件内容与宿主机中的文件一致,也就是说如果容器中原本存在/opt/file,文件的原有内容将被抹去。

    设置只读权限
    docker run -d -P —name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

    指定容器只能读取该文件夹或者文件,不能写入。

    3,volume整合第三方存储插件

    docker run -d -P —volume-driver=flocker -v my-named-volume:/opt/webapp —name web training/webapp python app.py

    使用—volume-driver挂载一个flocker,使用flocker插件将 voluemname 挂载到容器的 /data 目录。

    docker volume create -d flocker -o size=20GB my-named-volume
    通过flocker插件创建一个名字为my-named-volume空间为20G的存储。
    docker run -d -P -v my-named-volume:/opt/webapp —name web training/webapp python app.py

    4,共享volume