想让容器更快?这五种方法您必须知道! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
RancherLabs
V2EX    云计算

想让容器更快?这五种方法您必须知道!

  •  
  •   RancherLabs 2018-02-07 10:33:35 +08:00 4087 次点击
    这是一个创建于 2855 天前的主题,其中的信息可能已经有所发展或是发生改变。

    容器的卖点之一是容器化应用程序的部署速度通常比虚拟机快,且性能更佳。

    虽然容器的默认速度比其他基础设施快,这并不意味着没有办法让它们更快。本文将演示如何通过优化 Docker 容器镜像构建时间、性能和资源消耗,来让容器的速度与性能更超默认值一步。

    何为“更快”?

    在我们深入探讨 Docker 优化技巧之前,先容我先解释一下“更快”容器的含义。

    在关于 Docker 的讨论中,“更快”这个单词可以有多种含义。它可以指在容器中运行的进程或应用程序的执行速度,可以指镜像生成时间,它可以指部署应用程序所需的时间,或通过整个交付管道推送代码的时间。

    在这篇文章中,我将从多个角度讨论可以使 Docker 更快的多种方法。

    让 Docker 更快

    以下策略可以帮助您让 Docker 容器变得更快。

    1、采取最小化的方法进行镜像处理

    镜像中的代码越多,生成镜像所需的时间越长,用户下载镜像的时间也就越长。此外,由于消耗的资源多于所需资源,代码繁多的容器可能运行起来不够优化。

    出于这些原因,您应该尽可能将您的容器镜像中的代码减少到镜像应该执行的操作的最低限度。

    在某些情形下,设计简单的容器镜像可能需要您重新构建应用程序本身。不管是将它们部署在容器还是别的地方,臃肿的应用程序总是难免部署缓慢和性能低下。

    在编写您的 Dockerfile 时,您还应该抵制住在不必要的情况下添加服务或命令的诱惑。比如说,如果您的应用程序不需要 SSH 服务器,则不要包含 SSH 服务器。再比如说,如果不是必须,则避免运行 apt-get upgrade。

    2、使用极简操作系统

    与虚拟机相比,容器的最大好处之一就在于容器不需要复制整个操作系统来托管应用程序。

    为了充分利用这一特性,您应该使用一个操作系统托管您的镜像,且该操作系统应包含您所需的一切,除此之外再无其他。任何无法促进您 Docker 环境任务执行的服务或数据都应该被剔除。任何额外的东西都会导致系统臃肿,从而削弱您的容器的效率。

    幸运的是,您不必自己动手为 Docker 构建您自己的操作系统。市场上有不少已预先构建的、轻量的 Linux 发行版来供您托管 Docker,例如 RancherOS。

    3、优化构建时间

    持续交付管道中最大的问题就是镜像构建所需的时间。当您需要等待很长时间才能构建 Docker 镜像时,可能会延迟整个交付过程。

    加速镜像构建时间的一种方法是使用镜像仓库。通过减少在构建镜像时下载组件所需的时间,可以加快构建镜像的速度。

    将多个运行命令组合成一个命令,也可以缩短镜像的构建时间,因为它减少了镜像中的层数,从而提高了构建速度,并优化了镜像大小。

    Docker 的构建缓存特性是另一种提高构建速度的有效方法。缓存让您可以利用现有的缓存镜像,而无需从头构建每个镜像。

    最后,正如上面所讨论的,构建极简的镜像也将加快构建时间。需要构建的越少,构建的速度就越快。

    4、使用 CaaS (容器即服务)平台

    对于许多组织的工作人员来说,快速高效地部署容器的最大障碍来自于构建和管理容器环境本身的复杂性。

    这就是 CaaS (容器即服务)行之有效的原因。使用 CaaS,您可以获得预配置的环境以及部署和管理工具。CaaS 将有助于防止那些可能导致持续交付链变慢的瓶颈。

    5、使用资源配额

    默认情况下,每个容器可以消耗尽可能多的资源。然而某些情形下并不会总是这么理想,设计不良或产生故障的容器会消耗资源,造成其他容器运行缓慢。

    为了防止出现这个问题,您可以在每个容器的计算、内存和磁盘 I/O 分配上设置配额。要记住,错误配置的配额也会导致严重的性能问题。因此,您需要确保您的容器能够访问它们所需的资源。

    结 论

    即使你的容器已经很快了,你也可以让它们更快。优化您的镜像,缩短镜像构建时间,避免操作系统膨胀,利用 CaaS 和设置资源配额,这些都是提高 Docker 环境的总体速度和效率的可行方法。

    4 条回复    2018-02-14 11:35:17 +08:00
    defunct9
        1
    defunct9  
       2018-02-07 11:18:29 +08:00
    等待下一条的广告语
    tempdban
        2
    tempdban  
       2018-02-07 11:26:02 +08:00
    没有干货
    feverzsj
        3
    feverzsj  
       2018-02-07 11:27:57 +08:00
    rancher2.0 什么时候出来,ha 方案什么时候能不用 mysql ha cluster,这样还不如直接用 k8s
    RancherLabs
        4
    RancherLabs  
    OP
       2018-02-14 11:35:17 +08:00
    @feverzsj Rancher 2.0 的第二版技术预览已经出啦,二月底会发布 beta 版,计划三月底 GA。mysql 只是存放 rancher 的数据,k8s 的数据存放在 etcd。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5723 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 06:15 PVG 14:15 LAX 22:15 JFK 01:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86