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. 字符串数据结构模板/题单(后缀数组,后缀自动机,LCP,后缀平衡树,回文自动机)

    模板 后缀数组 #include<bits/stdc++.h> #define R register int using namespace std; const int N=1e6+9; ...

  2. VS编译LESS插件

    1. LESS   用LESS写CSS可以用写程序代码的习惯写CSS.用了之后写CSS的效率会提高很多. 2.解释LESS 写出来的文件扩展名是.less,要运行的话,先解释成正常的CSS文件. 3. ...

  3. Vue组件之间数据交互与通信

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 一.父组件向子组件传递数据 在 Vue 中,可以使用 props 向子组件传 ...

  4. bzoj4540 序列 (单调栈+莫队+rmq)

    首先,如果我知道[l,r],要转移到[l,r+1]的时候,就是加上以r+1为右端点,[l,r+1]为左端点的区间的最小值,其他情况和这个类似 考虑这玩意怎么求 右端点固定的话,我左端点越往左走,这个最 ...

  5. bzoj2560串珠子(子集dp)

    铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci, ...

  6. Hadoop集群的构建和安装

    1.安装Java $ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel 上述命令默认安装位置/usr/lib/jvm/java-1. ...

  7. Windows android SDK环境配置及判断安装成功

  8. 第一篇:安装Android Studio问题及其解决方案

    ubuntu18.04配置android studio3.2.1环境 1.JDK安装与配置:https://www.cnblogs.com/yuanbo123/p/5819564.html(按照文档操 ...

  9. 初识JSP知识

    一.jsp概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP实际上就是Servlet. jsp = html ...

  10. CodeForces - 18A Triangle(数学?)

    传送门 题意: 给出三个点的坐标,初始,这三个点可以构成一个三角形. 如果初始坐标可以构成直角三角形,输出"RIGNT". 如果某个点的 x或y 坐标移动一个单位后可以组成直角三角 ...