zoukankan      html  css  js  c++  java
  • docker 存储驱动(storage driver)知识总结

    http://www.sohu.com/a/101016494_116235

    一,先看docker镜像是如何构建和存储。

    下面是ubuntu:15.04的镜像分层.一共是4层,每一层都由一些只读并且描绘系统区别的文件组成. 也可以使用命令  docker history ubuntu:15.04查看。

      

      Docker存储驱动的作用就是:将这些分层的镜像文件堆叠起来,并且提供统一的视图.使container的文件系统看上去和我们普通的文件系统没什么区别.

      当创建一个新的容器的时候,实际上是在镜像的分层上新添加了一层container layer(容器层).之后所有对容器产生的修改,实际都只影响这一层.

     

     注意:

      容器层:读写层(可写层)

      镜像层:只读层

    镜像与容器的一个主要区别就是,是否具有顶层的读写层(可写层).

    对于一个容器的数据新增,修改,都存储在可写层.当你删除一个容器的时候,可写层也将被删除(注意:可写层与数据卷的区别).然而镜像层是保持不变的.

    下图展示了,多个容器共享一个镜像.镜像层是只读层,不变的.多个容器层在同一个镜像层之上,并且相互独立,互相不影响.

       docker 存储驱动的职责就是将镜像层和可写容器层管理起来.不同的驱动实现管理的方式也不一致.

        实现容器与镜像管理的两个关键技术就是可堆叠的镜像层和copy-on-write (CoW,写时复制).

    数据卷与存储驱动

    当一个容器删除的时候,写入该容器的所有数据将被删除(除了保存在数据卷中的数据)

    数据卷是挂载到容器的,docker宿主机上的一个目录或文件。对数据卷的文件读写是不受存储驱动控制的,接近于本地文件系统读写速度.可以挂载多个数据卷到一个容器.也可以多个容器共享一个或多个数据卷.

    如图所示:一个docker宿主机运行2个容器。每个容器有自己的存储空间,存储于宿主机本地文件系统 /var/lib/docker/… 另外有一个共享的数据卷在 /data.挂载到两个容器内实现共享.

    docker目前支持的存储驱动有:OverlayFS,AUFS,Btrfs,Device Mapper,VFS,ZFS。

    docker的存储驱动目前并没有一个通用的,完美的,适用于所有环境的存储驱动.所以需要根据自己的环境来有所选择.

    设置docker的存储驱动  :

  • 相关阅读:
    opencv 1.0 与 2.0的库对应表
    OpenCV SIFT原理与源码分析
    计算机杂志排名
    opencv Installation in Linux and hello world
    SSL 通信及 java keystore 工具介绍
    侧方位停车技巧图解 教你快速便捷停车(图)
    opencv 中文文档地址
    books
    Mysql processlist命令
    MYSQL优化之碎片整理
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/11759094.html
Copyright © 2011-2022 走看看