docker存储卷

一. 介绍

  Docker的存储卷称之为volume,本质上容器上的一个或者多个目录,而这些目录绕过了联合文件系统,与宿主机中的目录或者其他容器目录进行了绑定关系,这种绑定关系可以看作Linux的mount操作,当容器中的程序对这些目录写入数据时,其实写入到的是与之绑定的宿主机目录上,这样就实现了数据的存储功能。

  默认情况下,容器不使用任何 volume时,容器的数据被保存在容器之内,它只在容器的生命周期内存在,会随着容器的删除而被删除,而想要持久化的存储这些数据,就得使用存储卷。特别的,保存容器中的数据也可以使用 docker commit 命令将容器提交为一个新的镜像,这个镜像中会保存容器运行时的所有数据(绑定的数据卷除外),但此种方法非常不推荐,因为这样的镜像通常会很大,镜像拉取以及运行容器都会变慢。当容器使用了存储卷,即使容器被删除了,但是与绑定的存储卷还在,对应目录的数据都会保存,如果想要恢复该容器,只要新建的容器绑定该存储卷,对应目录的数据也会随之恢复。

  docker的存储卷分为两类:

    绑定挂载卷:在宿主机上的路径要人工的指定一个特定的路径,在容器中也需要指定一个特定的路径,两个已知的路径建立关联关系
    docker管理卷: 只需要在容器内指定容器的挂载点是什么,而被绑定宿主机下的那个目录,是由容器引擎daemon自行创建一个空的目录,或者使用一个已经存在的目录,与存储卷建立存储关系,这种方式极大解脱用户在使用卷时的耦合关系,缺陷是用户无法指定那些使用目录,临时存储比较适合。

  

二. 绑定挂载卷

  指定宿主机上一个目录与容器上某个目录绑定,建立链接。

  docker  run  -v  宿主机目录:容器上目录

  

   当我们在容器上对index.html进行操作时,改变会同步到宿主机上对应目录下。

  

   查看宿主机下对应文件:

  

   当我们使用docker   inspect   来查看该容器时,可以看到其与宿主机绑定的目录:

  

 

 三. docker管理卷

  仅仅指定容器下挂载点目录,而宿主机与之对应挂载点目录交由容器进行创建。

  docker   run   -v   容器挂载点

  

   我们可以用docker    inspect   查看容器挂载目录绑定到宿主机上哪个目录:

   我们可以在该目录下创建一个文件,来看看容器b1的挂载目录下有没有该文件:

  

   

   在容器b1下的挂载点:

    

   我们修改容器b1下挂载目录下index.html文件的内容,也会同步到宿主机上挂载目录下对应文件。

   

 

     

   四. 共享卷。

    多个容器的卷使用同一个宿主机目录。

    容器b1:

      

     容器b2:

      

     当我们修改容器b1下/data/index.html内容时,也会共享同步到b2:

      

     

 

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值