写点什么

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

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

评论

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

2022年IAA行业品类发展洞察系列报告:内容向APP及休闲游戏的突围

易观分析

IAA 休闲游戏

恒源云(Gpushare)_如何获取实例SSH端口号?技巧大放送7!

恒源云

服务器 终端登录

厉害!我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证!

沉默王二

Java

fastposter v2.7.0 发布 电商海报编辑器

物有本末

海报 fastposter 海报生成器 海报编辑器 主图编辑器

百度程序员开发避坑指南(前端篇)

百度Geek说

前端

恒源云(Gpushare)_啥,还不知道咋关机?技巧大放送6!

恒源云

人工智能 GPU服务器

基于 KubeVela 的机器学习实践

阿里巴巴云原生

后端开发【一大波干货知识】tcp/ip定时器与滑动窗口详解

Linux服务器开发

网络协议 TCP/IP 后端开发 Linux服务器开发 C++后台开发

TASKCTL-调度监控常见问题

敏捷调度TASKCTL

kettle 分布式任务调度 ETL任务 ETL系统

一场由TiCDC异常引发的GC不干活导致的Tikv硬盘使用问题

TiDB 社区干货传送门

CentOS8安装erlang 和 RabbitMQ

阿Q说代码

4月月更 RabbitMQ安装 erlang安装

银行推进人工智能技术应用时需同步考量可信AI的评估与验证

易观分析

人工智能 AI

活动预告 | 对话ACE:Oracle停服俄罗斯,国产数据库未来发展

OceanBase 数据库

oceanbase

"三高"Mysql - Mysql备份概览

懒时小窝

MySQL 高可用 MySQL 数据库

多场景实现供应链可视化,小家电产业出海焕发新活力

数商云

产业数字化 供应链 供应链系统

硅谷区块链公司Espresso Systems因涉嫌知识产权盗窃被起诉

西柚子

局部变量是线程安全的,原因是什么?

华为云开发者联盟

线程 高并发 变量 线程安全 局部变量

实例解析网络编程中的另类内存泄漏

华为云开发者联盟

TCP 网络编程 网络 压力测试 内存泄漏

pip:带你认识一个 Python 开发工作流程中的重要工具

华为云开发者联盟

Python 项目管理 pip 依赖关系 包管理器

日志中台不重不丢实现浅谈

百度Geek说

后端

netty系列之:netty中的核心编码器bytes数组

程序那些事

Java Netty 程序那些事 4月月更

日志中台不重不丢实现浅谈

百度开发者中心

资产设备信息管理系统的功能

低代码小观

资产管理 CRM 企业管理系统 CRM系统 企业设备管理

如何为网站建立一个FAQ页面?

小炮

FAQ

实践GoF的设计模式:单例模式

华为云开发者联盟

程序设计 设计模式 单例模式 GoF 共享实例

图文并茂|彻底搞懂零拷贝(Zero-Copy)技术

深度Linux

内存管理 Linux内核 进程管理 嵌入式开发 设备驱动

眼见为实,看看MySQL中的隐藏列!

码农参上

MVCC MySQL 数据库 4月月更

测试人员最佳测试管理工具

阿里云云效

阿里云 云原生 开发 测试管理 测试管理工具

如何满足一个前端对 Mock 的全部幻想

Liam

前端 Jmeter Postman Mock

为什么要做网站SEO优化?

源字节1号

SEO优化

王者荣耀商城异地多活架构设计

阿卷

架构实战营

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