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. 【 HDU2966 】In case of failure(KD-Tree)

    BUPT2017 wintertraining(15) #5E HDU - 2966 题意 给平面直角坐标系下的n个点的坐标,求离每个点和它最近点的距离的平方.\(2 \le n \le 10^5\) ...

  2. python学习日记(编码再回顾)

    当想从一种编码方式转换为另一种编码方式时,执行的就是以上步骤. 在python3里面,默认编码方式是unicode,所以无需解码(decode),直接编码(encode)成你想要的编码方式就可以了. ...

  3. Leetcode 27.移除元素 By Python

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  4. python3 sys模块

    模块sys有关python运行环境的变量和函数: 常用方法: sys.argv:一个列表,包含脚本外部传入的参数,argv[0]为脚本名 sys.exit([arg]):退出当前程序,可指定返回值或错 ...

  5. [2017-8-02]Android Learning Day8

    自定义动画效果 新建一个customAnim类 package com.liwenchi.myapplication; import android.view.animation.Animation; ...

  6. Baker Vai LightOJ - 1071 (MCMF)

    在个给出的矩阵从,从左上角走到右下角,然后再从右下角走到左上角,两次不能经过想同的点,每个点都有一个价值,问最大的价值是多少. 可以把原来的问题化简成从左上角走两条路到右下角,然后把价值加起来,然是这 ...

  7. [ZJOI2007]仓库建设(斜率优化)

    L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...

  8. BAT脚本实例

    一个简单的BAT脚本实例,重点在于说明各命令用法: @ ECHO OFF REM 打开ECHO回显 echo 1.列出C盘根目录中所有文件 pause dir C:\ echo. echo 2.等待1 ...

  9. luoguP4707 重返现世

    收集邮票加强版,每个邮票不是等概率获得的了. 而且是获得K个,如果把一个全集S集合找出其获得时间集合(显然获得时间两两不同)的话,那么就是第n-k+1大的期望! %%%Sooke min-max容斥扩 ...

  10. 计算基因上外显子碱基覆盖度(exon coverage depth):Samtool工具使用

    假设想要计算ATP1A4基因上的外显子碱基覆盖度 首先查询这个基因所有exon的起始和终止位置,查询链接:http://grch37.ensembl.org/Homo_sapiens/Transcri ...