Docker入门系列--Docker数据存储(七)

Docker入门系列–Docker数据存储(七)

1、数据卷特性

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

  • 如果运行中的容器修改可现有的一个已经存在的文件,那么该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,次即“写时复制”机制
    Docker入门系列--Docker数据存储(七)2、数据卷的意义

  • Volume可以在运行容器时即完成创建与绑定操作。当然,前提需要拥有对应的申明

  • Volume的初衷就是数据持久化
    Docker入门系列--Docker数据存储(七)
    3、数据卷的类型

  • Bind mount volume

  • Dokcer-managed volume
    Docker入门系列--Docker数据存储(七)4、容器中使用数据卷的方法

  • Docker-managed Volume
     docker run -it --name roc -v MOUNTDIR roc.lamp:v1.0
    &emps;docker inspect -f {{.Mounts}} roc

  • Bind-mount Volume
     docker run -it -name roc -v HOSTDIR;VOLUMEDIR roc/lamp:v1.0

  • Union Volume
     docker run -it --name roc --volumes-from ContainerName roc/lamp:v1.0

    5、存储驱动

Docker存储驱动(storage driver)是Docker的核心组件,它是Docker实现分成镜像的基础

  • device mapper(DM):性能和稳定性存在问题,不推荐生产环境使用
  • btrfs:社区实现了btrfs driver,稳定性和性能存在问题
  • overlayfs:内核3.18overlayfs进入主线,性能和稳定性优异,第一选择
    Docker入门系列--Docker数据存储(七)
    mount -t overlay overlay-olowerdir=./low,upper,workdir=./work./mergedd

修改为overlayfs存储驱动
echo “overlay” > /etc/modules-load.d/overlay.conf
cat/proc/modules|grep overlay
reboot
vim /etc/systemd/system/docker.service
–storage-drive=overlay

容器数据卷
将运用与运行的环境打包行程容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的
容器之间希望有可能共享数据

Docker容器生产的数据,如果不通过docker commit生成镜像,使得数据作为镜像的一部分保存下来,那么当然偶偶那个气删除后,数据自然也就没有了
为了能保存数据在docker中我们使用卷
直接命令添加
命令:docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /myDataVolume:/dataVolumeContainer centos /bin/bash
docker run -it -v /myDataVolume:/dataVolumeContainer:rw centos /bin/bash
查看数据卷是否挂载成功
docker run -it --name dc02 --volumes-from dc01 zzyy/centos 容器间传递共享(–volume-from)
结论:容器之间配置信息传递,数据卷的生命周期一直持续到没有容器使用它为止。