一.Docker容器使用前其实有个非常重要的步骤就是规划好部署的磁盘区域,因为docker容器默认存储的路径是在/var/lib/docker的根目录内,随着使用时间越长部署的内容越多,基本的根目录的大小是不能完全满足的;所以最理想的状态是使用lvm逻辑卷管理,使用灵活的目录空间满足docker容器内容的存储。
关于修改docker容器存储的默认路径,目前是两种可以使用的方式:
1.使用ln软连接:停止docker服务后,把docker中的内容全部拷贝到指定的目录,然后删除docker目录,最后使用ln软连接到指定的目录

 ln -s /data/docker/dockerRoot /var/lib/docker

这样做的好处是不影响现有环境的配置,可以继续使用当前配置
2.使用--graph(简写-g)参数:停止docker服务后,把docker中的内容全部拷贝到指定的目录,在Centos系统中/etc/sysconfig/docker配置参数,指定存储的路径,但在docker17版本后centos已经没有/etc/sysconfig/docker配置文件,不过可以通过/etc/docker/daemon.json也可以生效。


配置完毕后可以通过docker info命令检查是否更换成功

二.存储驱动比较
目前在实际工作中遇到了两种不同的docker存储驱动,一个是版本较老的Device Mapper,还有一种是overlay。Device Mapper是docker低版本默认自带的存储驱动,会限制docker存储大小;在Linux内核内核3.18(实际服务器中3.10也可以使用)后可以默认使用overlay驱动存储。
1.Device Mapper
Device mapper是块级存储,所有的操作都是直接对块进行操作,而不是文件。Device mapper驱动会先在块设备上创建一个资源池,docker服务启动时默认会在/var/lib/docker/devicemapper/devicemapper/目录创建一个107.4G的data文件,然后启动的容器的所有变更的数据全部保存到这个data文件中;也就是说当容器内产生的相关data数据超过107.4G后容器就再也没有多余的空间可用,从而导致所有容器的根目录变为只读!同时它会限制每个容器最大为15.19GB。

2.overlay
Overlay是Linux内核3.18后支持的,Overlay2驱动只兼容Linux kernel4.0以上版本。overlay只有两层:一个upper文件系统和一个lower文件系统,分别代表docker的镜像层和容器层。当修改文件时,文件会从只读的lower层复制到可写的upper层进行修改,结果也保存在upper层。

3.Device Mapper对比overlay
Overlay是文件级存储,Device mapper是块级存储,当文件特别大而修改的内容很小,Overlay不管修改的内容大小都会复制整个文件,对大文件进行修改显示要比小文件要消耗更多的时间,而块级无论是大文件还是小文件都只复制需要修改的块,并不是整个文件,在这种场景下,显然device mapper要快一些。所以Device mapper适合IO密集的场景,而对于程序内部复杂,大并发但少IO的场景,Overlay的性能相对要强一些。

补充:Device mapper和overlay是不能兼容的驱动存储,如果要从device mapper切换到overlay需要重新部署docker容器。

Docker存储容易忽略的使用细节的更多相关文章

  1. Docker存储卷(V18.X)

    简介 介绍 Docker的存储卷称之为volume,本质上容器上的一个或者多个目录,而这些目录绕过了联合文件系统,与宿主机中的目录或者其他容器目录进行了绑定关系,这种绑定关系可以看作Linux的mou ...

  2. 理解Docker(8):Docker 存储之卷(Volume)

    (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 ...

  3. 理解Docker(7):Docker 存储 - AUFS

    (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 ...

  4. Docker存储驱动之OverlayFS简介

    简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 1) 更简单地设计: 2) 从3.18开始,就进入了Linux内核主线: 3) 可能更快一些. ...

  5. Docker存储驱动之Device Mapper简介

    Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术.Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能.为了区别, ...

  6. Docker存储驱动之总览

    简介 本文会介绍Docker存储驱动的特性,别列出现在已经支持的存储驱动,最后,会介绍如果选型适合你的存储驱动. 可插拔的存储驱动架构 Docker的存储驱动架构是可插拔的,可以让你很方便的将适合你环 ...

  7. Docker存储

    前言 上一篇文章中简单总结了一下docke的基础使用方法,这次我来总结一下有关docker存储方面的相关知识.本文同样建立在CloudMan的系列教程之上,有兴趣的可以直接移步. 有些人可能觉得这个很 ...

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

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

  9. 6、Docker存储卷

    Why Data Volumes?  来自马哥教育 Data volumes Volume types  绑定挂载卷:在宿主机和容器上各指明绑定路径才能进行绑定. docker管理卷:在容器内指定挂载 ...

随机推荐

  1. Excle导出优化(poi)

    搜索词条 1.idea报java.lang.OutOfMemoryError: Java heap space怎么解决? 2.java.lang.OutOfMemoryError: GC overhe ...

  2. eclipse 编辑器 setDirty方法无效

    可能是因为使用的编辑器继承了FormPage导致的,在setDirty方法里面多加一行getManagedForm().dirtyStateChanged();就可以了.

  3. C# 通过浏览器打开指定url

    using System.Diagnostics; var resultsg = Process.Start(@"C:\Users\Administrator\AppData\Local\S ...

  4. 解决Android SDK更新慢

    SDK Manager -> tools -> options: HTTP Proxy Server: mirrors.neusoft.edu.cn HTTP Proxy Port: 80 ...

  5. Codeforces Round #584 C. Paint the Digits

    链接: https://codeforces.com/contest/1209/problem/C 题意: You are given a sequence of n digits d1d2-dn. ...

  6. P5358 [SDOI2019]快速查询

    思路:...乱搞数据结构?? 提交:1次 题解: 观察到除了单点就是全局操作,所以我们维护一个全局加法标记add和乘法标记mul和答案sum. 单点修改时,比如我们要把 \(pos\) 位置改成 \( ...

  7. vue编辑、新增弹框(引用外部页面)

    vue编辑.新增弹框(引用外部页面) 2018年06月15日 09:37:20 会飞的猪biubiu 阅读数 10265    版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...

  8. java.io.ObjectInputStream类详解

    1.public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants分析 ...

  9. Luogu [P3622] [APIO2007]动物园

    题目链接 比较费脑子的一道题 先说题目核心思想 : 状压dp 环的处理我们先不管. 我们设 dp[j][s] 表示 到达动物 j 且 [ j , j+5) 这五个动物状态为s时 最多能使多少小朋友开心 ...

  10. Windows Storage 驱动开发 葵花宝典 - 翻译

    Roadmap for Developing Windows Storage Drivers Last Updated: 4/20/2017   To create a storage driver, ...