为了性能,请不要在CentOS中运行Docker,尽量用Ubuntu


【编者的话】生产环境里Docker运行在CentOS上似乎是大家的共识,但本文的作者通过自己在CentOS上使用Docker比在Ubuntu上性能缓慢的体验差异,决定转向在Ubuntu上使用Docker。你们是否对Docker运行在CentOS或Ubuntu上的性能差异有自己的见解,下面让我们看看作者的理由。

多年来,我一直是一个铁杆的CentOS用户。我很喜欢它最小安装创建的轻量环境,直观的安装过程和包管理软件。Docker是当今最流行的容器格式,为开发人员和爱好者提供了一个在容器环境里运行任务的简单方法。我在生产环境中使用Docker大约有一年时间,运行的服务有Plex媒体服务器,博客的Web服务器,ZNC服务器,MineCraft服务和MySQL服务等等。Dockerfile是一组用来创建Docker镜像的指令。我投入了很多时间使用CentOS和Fedora制作完美的Dockerfile,它能简化安装和部署。然而,我现在却想换个环境:)

Docker在CentOS和Fedora上的性能非常差。出现这种情况的原因是因为Docker使用device mapper作为默认存储。Device Mapper是基于内核的框架,给人们提供一个现成的简单方法来使用Docker,并被认为比Linux上许多先进的卷管理技术更好。虽然有Device Mapper的替代方法,如使用OverlayFS等等,但对我来说它们的效果不太理想。当我建立一个容器时,Dockerfile中的每个步骤可能需要一分钟或更长时间才能完成,如添加一个zip文件到镜像中或替换配置文件中文本。我已经发现有关此主题的许多博客文章和已经公布的bug,但是我现在需要对该问题的一个可行的解决方案。

DigitalOcean.com是个不错的托管服务提供商,可以让你的虚拟服务器或应用程序如Docker运行在固态硬盘驱动器上的虚拟机里,每个月只需要5美元。当我尝试在Digital Ocean或Ubuntu上使用Docker时,性能是难以置信的快。当在Digital Ocean上通过CentOS使用Docker时,我同样感到性能欠佳。在使用Docker Machine(它是一种在Mac操作系统上使用VirtuaBox运行Docker的简单方式)时Docker的性能同样很棒。昨天晚上,根据我以往的生活经验,我最终决定必须对我的服务器进行改变,将其切换到了Ubuntu操作系统上。

我安装了Ubuntu 15.10服务器版,它在大多数情况下工作的很好。我认为CentOS/Fedora的安装程序领先Ubuntu一光年。例如,Ubuntu有繁琐的提示,而且配置磁盘并不和CentOS一样简单。最后,我只是有一个启动和运行比Ubuntu快的CentOS系统而已。我真的很喜欢Ubuntu的软件库,因为他们有所有我需要的Docker软件包,如随手可用的docker-compose。但在CentOS上,我需要手动安装额外的Docker仓库来获得相同的功能。Ubuntu使用AUFS作为Docker存储驱动程序。我不得不改变我所有的Dockerfile使用Ubuntu作为基础操作系统,这是因为我的一些现有Dockerfile因Docker的bug不能工作, 这些bug是由于在AUFS上使用CentOS/Fedora镜像导致的。

总之,完成这些是一个巨大的工作量,并且我睡的很晚。但是我认为这是对未来的一个巨大投资,这可以节省构建Docker容器的时间。正因为Ubuntu没有像CentOS/Fedora上相同的Docker问题,我现在可以毫不费力在云提供商之间迁移。

原文链接:Goodbye Docker on CentOS. Hello Ubuntu!(翻译:chenhl)

7 个评论

换Arch Linux吧,安装程序领先CentOS一光年,软件包很全而且更新快!
这个快慢有过数据说明嘛,不能说它慢就慢啊~
‘出现这种情况的原因是因为Docker使用device mapper作为默认存储’
按这个说法,只是build pull的时候性能差而已。但我们更关注运行中的性能问题,因而我认为镜像构建和镜像拉取的时候慢一点,不太重要。
最近出现死机 docker 命令卡死或timeout现象
有异议可以阅读原文。
原文作者抛出了观点,给大家指出了不同的思路,正确与否感兴趣自己去测测,测了就知道。
在编排应用时,有体验差异。

要回复文章请先登录注册