写点什么

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

  • 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:391122

评论

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

GaussDB(DWS)迁移实践丨row_number输出结果不一致

华为云开发者联盟

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

Musl libc 库成功适配到 openEuler Embedded,推动欧拉嵌入式生态发展

openEuler

Linux 操作系统 嵌入式 openEuler risc-v

全球化企业应如何统筹规划财务共享中心?

用友BIP

财务共享

AIGC背后的技术分析 | 通过EBG学习概念cup

TiAmo

机器学习 AIGC 解释学习

微服务之异步消息通信

Disaster

微服务

通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

Serverless Devs

“Fabarta 数据血缘治理解决方案”荣获“2023 鑫智奖”双料奖项

Fabarta

数据挖掘 数据分析 数据治理 图智能 血缘治理

了不起的互联网老男孩,在创业路上不掉队

HarmonyOS SDK

HMS Core

微服务系列之初探“微服务架构”

Disaster

微服务

微服务系列之微服务架构

Disaster

微服务

微服务之事务处理

Disaster

微服务

23种设计模式详解

Disaster

设计模式

OpenAI如何让ChatGPT遵守了伦理道德的底线

陈磊@Criss

财务共享服务中心建设流程是什么样的?

用友BIP

财务共享

微服务之服务容错

Disaster

微服务

数字化转型,低代码开发真的靠谱?

引迈信息

低代码 数字化 JNPF

深度解析如何通过财务共享建设助推企业数智化转型

用友BIP

财务共享

惊!掌握通义千问的关键,从这些必知内容开始!

加入高科技仿生人

人工智能 低代码 ChatGPT 数字转型 通义千问

让初学者读懂代码的入门书

博文视点Broadview

文件传输只是第一步,文件同步和备份的关键是

镭速

软件测试/测试开发丨学习笔记之用户端App自动化测试

测试人

程序员 软件测试 自动化测试 测试开发 app自动化测试

市场规模超百亿 低代码与传统IT开发有何不同

力软低代码开发平台

艾媒金榜|2023年中国信创数据库企业TOP15

亚信AntDB数据库

数据库 AntDB AntDB数据库

微服务系列之远程服务调用

Disaster

微服务

软件测试/测试开发丨学习笔记之接口自动化测试

测试人

程序员 软件测试 自动化测试 接口测试 测试开发

微服务系列之单体架构

Disaster

微服务

喜报!云智慧王海虎荣获中国信通院突出贡献专家奖

云智慧AIOps社区

大前端 低代码 数据可视化

携手共创开源新格局|2023开放原子全球开源峰会将于6月11日在京隆重开幕

开放原子开源基金会

大数据 开源 开放原子开源基金会 开放原子全球开源峰会 开放原子

微服务之流量控制

Disaster

微服务

软件测试 | 软件危机的几个体现

测吧(北京)科技有限公司

测试

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