Docker为容器提供了两种存放数据的资源:
 
    1、由storage driver 管理的镜像层和容器层
    2、Data Volume
 
storage driver
 
 
容器由最上面一个可写的容器层,以及若干制度的镜像层组成,容器的数据就存放在这些层中。这样的分层结构最大的特性就是 Copy-on-Write
 
    1、新数据会直接存放在最上面的容器层
    2、修改现有数据会先从镜像层将数据复制到容器层,修改后的数据直接保存在容器层,镜像层的中内容保持不变
    3、如果多个层中有命名相同的文件,用户只能看到最上面那层中的文件
 
分层结构是镜像和容器的创建、分享以及分发变得非常高效,而这些都要归功于 docker storage driver 。storage driver实现了多层数据的堆叠,并为用户提供了一个单一的合并之后的统一视图
 
Docker 支持多种storage driver ,有 AUFS、Device Mapper 、Btfs、OverlayFS、VFS和ZFS。他们都能实现分层的架构,同时又有各自的特性。对于Docker用户来说,具体选择使用哪个 storage driver是一个难题,因为:
 
    1、没有哪个driver能够适应所有的场景
    2、driver本身在快速发展和迭代
 
    Dcoker建议:优先使用 Linux发行版默认的storage driver。Docker 安装时会根据当前系统的配置选择默认的driver。默认driver具有最好的稳定性,因为默认driver在发行版上经过了严格的测试。
 
运行 docker info 可以看到系统默认的driver
 
---------centos 7---------
 
[root@docker-lab ~]# docker info
Containers: 9
Running: 1
Paused: 0
Stopped: 8
Images: 35
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
 
---------ubuntu 16---------
 
root@docker-lab:~# docker info
Containers: 6
Running: 3
Paused: 0
Stopped: 3
Images: 5
Server Version: 18.03.1-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
 
 
对于某些容器,直接将数据放在由storage driver维护的层中是最好的选择,比如那些无状态的应用。无状态意味着容器没有需要持久化的数据,随时可以从镜像直接创建。
 
比如busybox,他是一个工具箱,我们启动busybox是为了执行诸如 wget ping 之类的命令,不需要保存数据供以后使用,使用完可以直接退出,容器删除时存在放容器层中的工作数据也一起被删除,这没问题,下次再启动新容器即可。
 
但是对于另一类应用这种方式就不合适了,然有持久化数据的需求,容器启动时需要加载已有的数据,容器销毁时希望保留产生的新数据,也就是说,这类容器是有状态的。
 
有状态的容器需要用到Docker的另一种存储机制:Data Volume,下节学习

038、Docker 的两类存储资源(2019-02-27 周三)的更多相关文章

  1. 第 6 章 存储 - 038 - Docker 的两类存储资源

    存储资源 Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层 Data Volume 1.storage driver 容器由最上面一个可写的容器层 ...

  2. Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)

    我们从本章开始讨论 Docker 存储. Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层. Data Volume. 我们会详细讨论它们的原理和 ...

  3. 36-Docker 的两类存储资源

    我们从本章开始讨论 Docker 存储. Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层. Data Volume. 我们会详细讨论它们的原理和 ...

  4. 【英文文档】 Installing Go from source Go语言官方编译指南 2019.02.27

    Introduction Go is an open source project, distributed under a BSD-style license. This document expl ...

  5. 2019.02.27 bzoj4556: [Tjoi2016&Heoi2016]字符串(二分答案+sam+线段树合并)

    传送门 题意:给一个字符串SSS. 有mmm次询问,每次给四个参数a,b,c,da,b,c,da,b,c,d,问s[a...b]s[a...b]s[a...b]的所有子串和s[x...y]s[x... ...

  6. From today 2019.02.27

    HIT开设软件构造课程,需要在博客上分享记录学习体验,感觉还是挺好的. 以后会不定期更新一些关于学下java的笔记和实验相关的内容.

  7. docker (2)---存储、网络(利用docker容器上线静态网站)

    一.docker底层依赖的核心技术 1.命名空间 (Namespaces) 2.控制组 (Control Groups) 3.联合文件系统 (Union File System) 4.Linux 虚拟 ...

  8. centos7下安装docker(13.1docker存储--data volume)

    我们现在知道docker 有两种存储方式:storage driver和data volume stroage driver这种存储方式主要是存储那些无状态的数据,是镜像层和容器层组成的,而data ...

  9. docker镜像与容器存储结构分析

    注意:转载请注明出处:http://www.programfish.com/blog/?p=9 Docker是一个开源的应用容器引擎,主要利用linux内核namespace实现沙盒隔离,用cgrou ...

随机推荐

  1. 多IP加强SSH的安全性

    本文针对一台服务器有多个网卡及IP地址的情况,可以限制某些IP不监听SSH,只允许通过某些IP来登陆 以下配置项在/etc/ssh/sshd_config文件中修改 比如你有4个网卡: eth0 – ...

  2. linux系统下saltstack的安装和配置

    Saltstack是一个新的基础设施管理工具,两大功能:远程执行和配置管理. Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具.由Master和Minion构成,通过Zer ...

  3. Android assets res 文件夹的区别

    大家都知道建立一个Android项目后会产生assets与res的两个文件夹,理论上他们都是存放资源的文件夹,那么他们到底有什么区别呢? 1.assets:不会在R.java文件下生成相应的标记,存放 ...

  4. HDU 4549 M斐波那契数列(矩阵快速幂)

    题目链接:M斐波那契数列 题意:$F[0]=a,F[1]=b,F[n]=F[n-1]*F[n-2]$.给定$a,b,n$,求$F[n]$. 题解:暴力打表后发现$ F[n]=a^{fib(n-1)} ...

  5. [CERC2017]Intrinsic Interval(神仙+线段树)

    题目大意:给一个1-n的排列,有一堆询问区间,定义一个好的区间为它的值域区间长度等于它的区间长度,求包这个询问区间的最小好的区间. 题解 做法太神了,根本想不到. %%%i207m. 结论:当一个区间 ...

  6. [WC2008]游览计划(状压dp)

    题面太鬼畜不粘了. 题意就是给一张n*m的网格图,每个点有点权,有k个关键点,让你把这k个关键点连成一个联通快的最小代价. 题解 这题nmk都非常小,解法肯定是状压,比较一般的解法插头dp,但不太好写 ...

  7. java 内存调试 mat

    https://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/ http://www.open-open.com/lib/view/ope ...

  8. A1122. Hamiltonian Cycle

    The "Hamilton cycle problem" is to find a simple cycle that contains every vertex in a gra ...

  9. spring boot下MultipartHttpServletRequest如何提高上传文件大小的默认值

    前言: 上传下载功能算是一个非常常见的功能,如果使用MultipartHttpServletRequest来做上传功能. 不配置上传大小的话,默认是2M.在有些场景,这个肯定不能满足条件. 上传代码: ...

  10. vue学习(1)

    前置的准备学习: ES6简单语法: 1.let和const 2.模板字符串 3.箭头函数 4.对象的单体模式 5.es6的面向对象 6.模块化 1.let和const <script type= ...