三、Docker数据卷

1、介绍

Docker 镜像由多个只读层叠加而成,启动容器时,Docker 会加载只读镜像层并在镜像栈顶部添加一个读写层

如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本依然存在,只是已经被读写层中该文件的副本所隐藏,此即为 “写时复制(COW)”机制

在使用Docker的时候,关闭并重启容器,其数据不受影响;但删除docker容器,则其更改将会全部丢失

存在的问题

  • 存储于联合文件系统中,不易于宿主机访问
  • 容器间数据共享不便
  • 删除容器其数据会丢失

对于上面的问题,也是存在有解决方案的,那就是“卷(volume)

  •  是容器上一个或多个“目录”,此类目录可绕过联合文件系统,与宿主机上的某目录“绑定(关联)”

volume 在容器初始化时就会创建,由 base image 提供的卷中的数据也会在此期间完成复制

volume的初衷是独立于容器的生命周期实现数据持久化,因此删除容器之时既不会删除卷,也不会对哪怕未被引用的卷做垃圾回收操作

卷 为docker提供了独立于容器的数据管理机制

  • 可以把“镜像”想象为静态文件,例如“程序”,把卷类比为动态内容,例如“数据”;于是,镜像可以重用,而卷可以共享
  • 卷实现了“程序(镜像)”和“数据(卷)”分离,以及“程序(镜像)”和“制作镜像的主机”分离,用户制作镜像时无须再考虑运行的容器所在的主机的环境

2、类型

docker 有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同

  • 绑定挂载卷(bind mount volume):在容器和宿主机上为指定的路径进行绑定
  • docker管理卷(docker-manage volume):只需要在容器中指定挂载点即可,docker会自动将其挂载到宿主机的路径下

3、使用volume

在 docker container run 命令中使用 -v 选项即可使用 volume

如果两个容器想要共享同一个目录,其实也是可以都关联宿主机上相同的目录的,这样两个容器之间目录就实现了共享

4、数据卷容器

如果一个容器已经进行了挂载卷的操作,此时另外一个容器也想要和前一个容器一样的挂载卷配置,也是可以的

我们可以启动一个容器,这个容器什么也不做,仅仅用来挂载卷,这个容器只要在就行

  • 多个容器的卷使用同一个主机目录,例如

  • 复制使用其他容器的卷,为docker container run 命令使用 --volume-from 选项

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值