一.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. idea在springboot项目中显示Run Dashboard

    1.Run->Edit Configurations 2.在Templates[Defaults]-> Configurations available in Run Dashboard ...

  2. django.db.utils.OperationalError: (1050, "Table 'article_category' already exists")

    (转自:https://blog.csdn.net/huanhuanq1209/article/details/77884014) 执行manage.py makemigrations 未提示错误信息 ...

  3. Java8-ConcurrentUtils

    import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; public class Conc ...

  4. js中错误处理机制

    1.基本知识 1. 错误对象 Error,SyntaxError,RangeError, ReferenceError,TypeError,URIError 上面的都是构造函数: new 命令可以生成 ...

  5. bzoj2725

    * 给出一张图 * 每次删掉一条边后求 the shortest path from S to T * 线段树维护最短路径树 * 具体维护从某点开始偏离最短路而到达 T 的最小距离 * 首先记录下最短 ...

  6. ECMAScript 提案阶段

    stage0 strawman任何讨论.想法.改变或者还没加到提案的特性都在这个阶段.只有TC39成员可以提交. stage1 proposal (1)产出一个正式的提案. (2)发现潜在的问题,例如 ...

  7. 5.3.4 Hadoop序列化框架

    序列化框架 除了writable实现序列化之外,只要实现让类型和二进制流相互转换,都可以作为hadoop的序列化类型,为此Hadoop提供了一个序列化框架接口,他们在org.apache.hadoop ...

  8. 【Linux】安装 node.js

    1.在 linux 上安装 node.js 有几种方式,这里 教的是最简单的一种,因为其他都比较坑. 2.先去 node.js 官网 获取到已经编译好的安装包的地址, 3.使用 wget 去下载上面获 ...

  9. Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容

    封装http请求是项目中经常需要做的,常用于设置通用请求地址.请求headers以及处理返回结果,例如在项目中开发地址.测试地址.上线地址是不一样的,当在封装的请求设置好默认地址之后只需要改一个地址而 ...

  10. Everything 的高级用法

        文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论