写点什么

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

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

评论

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

今天又和Redis超时杠上了

华为云开发者联盟

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

Flutter三棵树系列之BuildOwner | 京东云技术团队

京东科技开发者

flutter 移动开发 源码解读 企业号 5 月 PK 榜 BuildOwner

阿里P8大佬的1800页计算机基础知识总结与操作系统,太强了!

做梦都在改BUG

Java 程序员 操作系统

辅助测试和研发人员的一款小插件【数据安全】 | 京东云技术团队

京东科技开发者

浏览器 数据安全 插件开发 企业号 5 月 PK 榜

如何用ReadWriteLock实现一个通用的缓存中心?

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

ByConity与主流开源OLAP引擎(Clickhouse、Doris、Presto)性能对比分析

墨天轮

数据库 字节跳动 OLAP Clickhouse Doris

医疗领域实体抽取:UIE Slim最新升级版含数据标注、serving部署、模型蒸馏等教学,助力工业应用场景快速落地

汀丶人工智能

人工智能 自然语言处理 知识图谱 关系抽取 命名实体识别

国内好用的堡垒机推荐-行云管家堡垒机

行云管家

网络安全 堡垒机

电商行业实践专栏上线|阿里巴巴风控实战如何解决大规模风控的技术难点?

Apache Flink

大数据 flink 实时计算

阿里大神级Elasticsearch学习笔记,还学不会就埋了

做梦都在改BUG

Java elasticsearch 分布式搜索引擎 ES

Git入门指南:从新手到高手的完全指南

小万哥

git Linux 程序员 后端 C/C++

太赞了,京东研发一哥力荐的高可用网站构建技术

做梦都在改BUG

Java 架构 京东

内核调试环境搭建

郑州埃文科技

网络安全 网络环境

火山引擎DataLeap的Catalog系统搜索实践(一):背景与功能需求

字节跳动数据平台

线程池是如何执行的?任务太多会怎样?

做梦都在改BUG

Java 线程池

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

测试人

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

双非渣硕,开发两年,苦刷算法47天,四面字节斩获offer

做梦都在改BUG

Java 数据结构 算法 LeetCode

软件设计中你考虑过重试了吗?

做梦都在改BUG

Java 软件设计 重试机制

空降攻略!一文带你玩转2023开放原子全球开源峰会

开放原子开源基金会

开源 开放原子开源基金会 攻略 开放原子全球开源峰会

小程序容器与PWA的完美结合:提升应用性能与用户体验

FinFish

私有小程序技术 小程序容器 PWA 小程序化 小程序技术

精准快速搜索文件:Find Any File 激活版

真大的脸盆

Mac 办公效率 文件搜索 搜索工具 搜索文件

狂刷三遍398道java最新MySQL笔记后,我四面阿里研发部,成功定级P7

做梦都在改BUG

Java MySQL 数据库

全国流体力学盛会召开,飞桨AI4S携最新科研进展亮相西湖大学

飞桨PaddlePaddle

人工智能 百度飞桨 科学计算

房地产行业IT运维安全就用行云管家堡垒机!

行云管家

运维 房地产 IT运维

Hybrid Shuffle 测试分析和使用建议

Apache Flink

大数据 flink 实时计算

开源边缘计算项目【FabEdge v0.8.0】配置connector公开端口操作说明

BoCloud博云

边缘计算 容器网络 FabEdge #开源项目体验 边缘网络

Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队

京东科技开发者

MySQL 数据库 企业号 5 月 PK 榜 DDL执行方式 pt-soc

莉莉丝游戏与火山引擎ByteHouse达成合作,为实时数仓建设提速

字节跳动数据平台

数据仓库 云原生 实时

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