【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

  • 2020-04-12
  • 本文字数:1501 字

    阅读完需:约 5 分钟

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

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


虽然容器的默认速度比其他基础设施快,这并不意味着没有办法让它们更快。本文将演示如何通过 优化 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 环境的总体速度和效率的可行方法。


2020-04-12 20:39728

评论

发布
暂无评论
发现更多内容

2023年春招Java面试刷题小抄,从P5~P8全家桶教学,全部刷完大厂Offer拿到手软

采菊东篱下

Java 面试

数据采集&流批一体化处理使用指南

大河

批处理 ETL 流处理 bboss 流批一体化

Web前端设计开发工具集(JS框架、CSS预处理)

2D3D前端可视化开发

前端开发 代码编辑器 css预处理器 web前端开发 前端开发工具

流量调度、微服务可寻址性和注册中心

有态度的马甲

LP流动性挖矿代币分红模式dapp系统开发原理

开发微hkkf5566

分享:如何给 DBA 减负?

OceanBase 数据库

数据库 oceanbase

用这三本书,探究 ChatGPT 的底层逻辑

图灵社区

深度学习 GPT #人工智能 ChatGPT

Springboot 撞上 NebulaGraph——NGbatis 初体验

NebulaGraph

Java ORM 图数据库

HUAWEI Mate X3带来全新小艺输入法, 9键双键盘左右开工、语音悬浮气泡免干扰

最新动态

4.0 功能抢先看 | 读懂一个项目的研发效能 之 项目交付效率

思码逸研发效能

研发效能

Dragonfly 最新版本 v2.0.9 发布

SOFAStack

开源 互联网 开发者 开发

爱因斯坦霉霉同框只需15秒,最新可控AI一玩停不下来,在线试玩已出丨开源

Openlab_cosmoplat

开源社区 AI绘画

选择KV数据库最重要的是什么

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

Apache HugeGraph1.0.0 版本正式发布!

百度安全

软件测试/测试开发丨app自动化测试之设备交互API详解

测试人

软件测试 自动化测试 测试开发 appium

动手实践开发一个智慧路灯控制器

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 3 月 PK 榜

快速开始高性能Elasticsearch客户端bboss

大河

elasticsearch java bboss restclient

文本数据标注,支持词典导入及更多快捷方式|ModelWhale 版本更新

ModelWhale

机器学习 数据分析 云平台 标注 标注工具

分享:FactorJoin,一种新的连接查询基数估计框架

OceanBase 数据库

数据库 oceanbase

测试同学职场成长的关键要素

老张

团队管理 个人成长

为研发效能度量找到合适的参照系

思码逸研发效能

研发效能 效能度量

信息抓包工具:Charles 激活版

真大的脸盆

Mac Mac 软件 抓包工具 信息抓包

用这三本书,探究 ChatGPT 的底层逻辑

图灵教育

深度学习 GPT #人工智能 ChatGPT

推荐一个比jmeter更轻量的开源测试平台:RunnerGo

爱研究代码的极客人

Jmeter 性能测试 自动化测试 压力测试 LoadRunner

用138个案例讲明白了Spring全家桶+Docker+MQ

Java你猿哥

spring 面试 Spring Cloud Spring Boot 面经

分享:ODC 如何精准展现 SQL 执行的耗时?

OceanBase 数据库

数据库 oceanbase

直播指南!解锁 OceanBase DevCon • 2023

OceanBase 数据库

数据库 oceanbase

从DPU角度,谈谈关于国产OS开源社区发展的思考

大禹智芯

DPU 国产OS开源社区

集成化、小型化、大势所趋,模块电源优势明显

华秋电子

photoshop 2023存储为窗口显示空白、黑屏如何解决

互联网搬砖工作者

ChatGPT4 给出数据库开发者最容易犯的10个错误和解决方案

NineData

数据库 程序员 开发者 dba ChatGPT

想让容器更快?这五种方法您必须知道!_文化 & 方法_Rancher_InfoQ精选文章