可插拔存储引擎架构

 
这种可插拔式的存储架构。可以让你很灵活的去选择适合自己环境的存储引擎。
每个存储引擎都是以Linux 文件系统为基础的。此外,每个存储引擎都以自己的方式自由的管理image层,container层。
也就是说每个种存储引擎在特定的情况下,表现的比其他的更好。
 
Docker只能运行一个存储引擎,所有的容器被daemon使用一样的存储引擎创建。
Dcoker支持的存储引擎:
 

docker info 命令查看daemon 中使用了哪个存储引擎:
zane@zane-V:~$ docker info
Containers:
Running:
Paused:
Stopped:
Images:
Server Version: 1.12.
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs:
Dirperm1 Supported: true
...
...
Backing Filesystem,实际参照Docker 主机用来创建 /var/lib/docker所使用的文件系统。
 
使用哪种存储引擎,实际上部分由Backing Filesystem 的类型来决定的。
下表列出了每种存储引擎是否必须和本地后备文件系统匹配:
 

可以在docker命令行通过 --storage-driver=<name>选项 或 /etc/default/docker 文件 设置选项的 DOCKER_OPTS行
 
下面的命令设置存储引擎为 divicemapper:
 
$ dockerd --storage-driver=devicemapper &
$ docker info
Containers:
Images:
Storage Driver: devicemapper
Pool Name: docker-:--pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 1.821 GB
 
选择的存储引擎会直接影响到容器应用的性能。
 
很多公司会使用共享存储系统如:SAN,NAS.这提高了性能和可用性。
 
记住docker 存储引擎是以Linux 文件系统或者 数据卷管理 为基础的。
各存储引擎官方都给出了最佳实践的文档,使用前可以实践以确定是否合适当前环境。
 
选择哪个存储引擎?

 
选择的关键因素
  • 没有哪个存储引擎适合所有的场景
  • 存储引擎是在不断的改善和发展的
 
稳定性
  • 使用默认存储引擎
  • 遵循CS引擎兼容性中指定的配置。
 
经验和专业
 
前瞻性
 
各存储引擎的优缺点
 

总结
  • 可插拔存储引擎的架构

    • 存储引擎以主机文件系统为基础
  • 查看使用哪个存储引擎
    • docker info
  • 主要存储引擎
    • AUFS
    • overlay

Docker 存储引擎的更多相关文章

  1. docker存储结构解析

    由于aufs并未并入内核,故而目前只有Ubuntu系统上能够使用aufs作为docker的存储引擎,而其他系统上使用lvm thin provisioning(overlayfs是一个和aufs类似的 ...

  2. Docker系列05—Docker 存储卷详解

    本文收录在容器技术学习系列文章总目录 1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加面成,启动容器时,docker会加载只读镜像层并在镜 ...

  3. docker日志引擎说明

    docker原生支持众多的日志引擎,适用于各种不同的应用场景,本篇文档对其作一个简单的说明. Docker日志引擎说明 docker支持的日志引擎如下: none:关闭docker的回显日志, doc ...

  4. Docker存储卷篇

    Docker存储卷篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.    一.写时复制(COW)机制 所谓写时复制的效果如上图所示: Docker镜像由多个只读层叠加而成,启动容器 ...

  5. 【转帖】技术选型之Docker容器引擎

    技术选型之Docker容器引擎 https://segmentfault.com/a/1190000019462392 图过不来的 原作者写的挺好的 题外话 最近对Docker和Kubernetes进 ...

  6. MySQL存储引擎入门介绍

    什么是MySQL? MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的. ...

  7. MySQL数据库和InnoDB存储引擎文件

    参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...

  8. Mysql存储引擎及选择方法

    0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...

  9. Mysql存储引擎比较

    Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...

随机推荐

  1. 【Reverse Nodes in k-Group】cpp

    题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list ...

  2. 【Climbing Stairs】cpp

    题目: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either cl ...

  3. 嵌入式tcpip

    嵌入式tcpip方案 目前高端一点的嵌入式处理器,如STM32F107,都带有MAC,因此用户在实现网络功能的时候,只需要外界PHY层的芯片, 目前使用比较都的是DM9161A.网上的驱动也比较多,开 ...

  4. python 学习分享-常用模块篇

    模块 就是前人给你造的轮子,你开车就好!!! 常用模块有: time模块 random模块 os模块 sys模块 shutil模块 json  &  picle模块 shelve模块 xml处 ...

  5. python 浮点数问题

    为什么 输入:0.2 + 0.1 得到的是:0.30000000000000004???? 0.1 * 3 = 0.30000000000000004????

  6. Python之实现不同版本线程池

    1.利用queue和threading模块可以实现多个版本的线程池,这里先贴上一个简单的 import queue import time import threading class ThreadP ...

  7. java基础-容器

    已经写了一段时间JAVA代码了,但仔细想来,却发现对JAVA的很多方面还是一片迷茫. 利用周末补一下基础知识吧. 大致列一下这个周末需要学习的内容 1 容器 (本节内容) 2 线程 3 流 目录 1 ...

  8. koa2在node6中如何运行

    koa2在node6下运行 { "babel-core": "^6.24.1", "babel-plugin-syntax-async-functio ...

  9. 洛谷4438 [Hnoi2018]道路 【树形dp】

    题目 题目太长懒得打 题解 HNOI2018惊现普及+/提高? 由最长路径很短,设\(f[i][x][y]\)表示\(i\)号点到根有\(x\)条未修公路,\(y\)条未修铁路,子树所有乡村不便利值的 ...

  10. 【bzoj2946】[Poi2000]公共串 后缀自动机

    [Poi2000]公共串 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1386  Solved: 620[Submit][Status][Discus ...