热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

聊一聊docker存储驱动

AUFS与DeviceMapper我们经常会听到说,在CentOS上运行docker与在Ubuntu上运行性能要差许多,甚至连启动都会更慢。这也是为什么在当前绝大多数的生产环境中,docker都被运行

AUFS与DeviceMapper

我们经常会听到说,在CentOS上运行docker与在Ubuntu上运行性能要差许多,甚至连启动都会更慢。这也是为什么在当前绝大多数的生产环境中,docker都被运行在ubuntu上而非centos上的原因。这是为什么呢?

简单来说,这就是DeviceMapper与AUFS的差别。在CentOS上,docker的默认存储驱动为DeviceMapper,而Ubuntu上,则使用的AUFS:
* AUFS是基于file-level的存储驱动,即所有的容器都直接使用的了宿主机的文件系统,所以可以获得与宿主机文件系统一样的性能;AUFS的缺点表现在应用第一次写上层docker image layer的文件会有延迟,而且延迟随文件的增大,layer的层数增多而变大
* DeviceMapper是基于block-level的存储驱动,可以理解为每个容器都有自己的文件系统,在block这一层做数据共享。DeviceMapper存储驱动进一步又分为loop-lvm与direct-lvm两种方式,前一种可以理解为LiveCD或者虚拟vmware镜像加载系统,后一种理解为原生磁盘加载系统,所以direct-lvm是docker官方推荐的生产环境配置,而loop-lvm又是centos环境下安装docker的默认配置,这也是刚接触docker的新人吐槽devicemapper不给力的主要原因。DeviceMapper的性能缺点表现在docker daemon启动慢,docker容器启动也相对较慢,频繁的小文件写入会有性能问题。DeviceMapper这些缺点中影响最大的是容器启动较慢的问题,但在配置了direct-lvm+volumn的情况下,创建并销毁1000个apache容器,也只需要900s。所以docker官方建议在生产环境使用DeviceMapper的direct-lvm模式,并且对于频繁读写的目录,建议挂载到数据盘。

其实从上面的说明我们不难看出,无论是DeviceMapper还是AUFS,亦或者其他的存储驱动,它们影响docker性能的前提是应用在频繁的读写容器里面的文件系统。也就是说一个一劳永逸的方式就是将数据盘挂载出来即可。


DeviceMapper的direct-lvm配置

从上面的分析,我们知道,在centos下运行docker,主要的性能缺陷表现在使用了DeviceMapper的loop-lvm存储驱动。如果在生产环境中,我们仍然使用centos的话,需要配置DeviceMapper的direct-lvm存储驱动。

详细的配置方法如下:
https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
author-avatar
她的马尔代夫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有