本文讲的是如何通过提前Bake Docker镜像加快基础设施的启动速度【编者的话】本文介绍了如何预热Docker镜像来减少基础设施的启动时间,比如通过Ansible工具、删除key.json文件和Docker PID文件等等。

我之前概述过加速AWS基础设施启动的方法。本文中谈到的方法可以进一步减少大约50%的时间,即在应用运行前,预先bake(pre-bake)所需服务。

我们的微服务应用托管于Docker容器,可以从Docker仓库或私有仓库中拉取(pull)。不像在Ubuntu服务器上使用bash脚本进行安装和配置,每个应用所对应的独立Docker镜像可以单独复制到所需实例。这意味着在处理较大负载时可以快速添加实例,如果此方法可行,值得在组织中推广应用。

用户体验的头一件事是演示流程,展示应用如何为团队的Github 分支(branches)创建环境。我们预先为应用demo在EC2 AMI创建单独镜像。这样,我们仅为需要运行应用的用户启动Docker容器。

可扩展IT自动化工具Ansible可以完成大部分工作。我们用它运行各种简单任务,如更新服务器host文件,生成证书,拉取需要的Docker镜像。举个例子,我们可以运行指定命令以及使用在Ansible YAML设置文件中的指定变量。在bake镜像时,Ansible拉取Docker镜像方法如下:

- name: pulling docker imagesbecome: truecommand: docker pull {{ item }}with_items:- "registry.runnable.com/runnable/image-builder:{{ IMAGE_BUILDER_VERSION }}"- "swarm:{{ SWARM_VERSION }}"- "google/cadvisor:{{ CADVISOR_VERSION }}"

考虑到bake到EC2镜像的东西必须是唯一的,否则如果每个镜像都有相同的标志文件,就没有办法加以区分。为了将Docker安装到AMI以及将容器bake到AMI,我们需要删除Docker key.json文件和Docker pid file。Docker在下次启动时还会生成这些文件,所以删掉也没关系。

实例必须和用户链接,这样我们才能协助他们的应用以及确定他们所使用的资源量。为了使实例在部署之后更加个性化,我们将亚马逊SSM代理bake到镜像中,这样就可以实现在第一时间与实例进行交互。为用户分配和配置实例的速度越快,内部DNS和路由配置允许应用访问的速度也就越快。

对于预先bake Docker镜像到亚马逊AMI这种做法,尽管目前支持它的理由还比较有限,但还是值得推广到几乎所有的架构。特别是Runnable这种一个实例可以对应各种应用、数据库和服务的情况,只要你知道实例在部署时需要什么,就可以使用上述方法。可以使用多个AMI来填补所有角色需要,或者只用一个有多个Docker镜像的实例,这些镜像不被运行也没有资源消耗。这种做法对高可用基础设施的扩展速度非常有帮助,可以将其缩短到数秒钟。

需要运行什么,就bake什么,这种做法理解起来很简单。由于存在重复的问题,我们还不能做到先发制人的准备好证书和指定配置,不过这些都是不计算在等待时间内的小进程。网络传输,也可能有磁盘I/O通常在服务器创建和启动新的Docker容器的过程中耗费较多时间,因此减少这类时间消耗能显著的提高启动速度。另外,这些考虑并非只针对特定产品。创建预先bake的AMI这种做法对任何团队来说,都能在创建新实例的时候节省等待时间。

原文链接:How We Pre-Bake Docker Images to Reduce Infrastructure Spin-Up Time(翻译:马远征)

原文发布时间为:2017-01-19

本文作者:马远征

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:如何通过提前Bake Docker镜像加快基础设施的启动速度

如何通过提前Bake Docker镜像加快基础设施的启动速度相关推荐

  1. SpringBoot 项目构建 Docker 镜像调优实践

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:超级小豆丁 http://www.mydlq.club/article/16/ PS ...

  2. Maven Docker镜像使用技巧

    摘要: Maven是目前最流行的Java项目管理工具之一,提供了强大的包依赖管理和应用构建功能.本文以Maven为例介绍了Docker在应用构建中的一些常见技巧. Maven是目前最流行的Java项目 ...

  3. 如何给Docker镜像瘦身?

    在本文中,你将了解如何加快Docker构建周期并创建轻量级镜像.还是用比喻来说吧,给Docker镜像瘦身就跟我们减肥一样,减肥时期我们吃沙拉,拒绝披萨.甜甜圈和百吉饼. 这是备忘单. FROM:指定基 ...

  4. 大规模集群中Docker镜像如何分发管理?试试Uber刚开源的Kraken

    Docker注册表的主要目的是存储和分发Docker镜像,看似是一个相对简单的任务,但是如果遇到了像Uber这样的大规模计算集群,就很容易成为可伸缩性的瓶颈.在多区域和混合云系统的计算环境中,镜像分发 ...

  5. Spring Boot 2.3.x 分层构建 Docker 镜像实战

    目录 一.什么是镜像分层 二.SpringBoot 2.3.x 新增对分层的支持 三.创建测试的 SpringBoot 应用 1.Maven 中引入相关依赖和插件 2.创建测试的 Controller ...

  6. 分布式事务seate-server的docker镜像的制作与部署

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT.TCC.SAGA 和 XA 几种不同的事务模式.在 Seata 中主要有以下三种角色,其中 ...

  7. 使用docker镜像搭建svn+Apache环境

    2019独角兽企业重金招聘Python工程师标准>>> 环境准备 虚拟机装好之后,按照官网步骤检查虚拟机内核版本,必须在3.10以上版本,故此处安装redhat_7.2 # unam ...

  8. docker 根据标签删除镜像_10 个 Docker 镜像安全最佳实践

    <Docker 镜像安全最佳实践速查表[1]>列举了 10 个诀窍和指南,确保更安全和更高质量的 Docker 镜像处理.此外,还可以检视有关 Docker 安全的新报告<Docke ...

  9. docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

    一.前言 1.本文主要内容 将在项目中实际使用到的相关东西整理记录一波,同时可以方便其他同学在使用到的时候参考一下(自己也备忘),有不对的地方,欢迎指出~~ Docker部署SpringBoot 项目 ...

  10. SpringBoot 2.3.x 分层构建 Docker 镜像实践

    目录[-] . 一.什么是镜像分层 . 二.SpringBoot 2.3.x 新增对分层的支持 . 三.创建测试的 SpringBoot 应用 . 1.Maven 中引入相关依赖和插件 . 2.创建测 ...

最新文章

  1. Oracle数据库操作注意事项
  2. AutoLISP将多段线各个端点坐标写入外部文件
  3. 8位数控分频器的设计_8位数控分频器
  4. 中科院副研究员高林:面向可视媒体分析与合成的深度几何学习方法分享
  5. Python:一文让你彻底理解numpy中axis=-1/0/1/2... [实例讲解:np.argmax(axis= -1 0 1 2) np.sum(aixs= -1 0 1 2)]
  6. C#中的Json的序列化和反序列化
  7. byte[] 数组和字符串的转换,与byte[] 数组和int类型的之间的转化
  8. XX银行数据中心建设方案
  9. 【百度地图】百度地图完全模仿链家找房,三级下钻联动聚合,画圈找房!
  10. JAVA社区疫情防控系统毕业设计 开题报告
  11. VMware虚拟机双屏显示
  12. 淘宝抢购Python脚本
  13. Excel表格数据导入到Oracle
  14. PHP导出基类(PHPExcel,PhpSpreadsheet)
  15. 我的python3.0 + RIDE搭建之路 ---全是血泪史
  16. 如何开发一款电商app小程序
  17. Zookeeper的Centos集群搭建
  18. DLT645电力规约网关BL110应用之55:实现电力行业 DT/L645 接入金鸽Modbus云平台
  19. java接收邮件_Java实现邮件收发
  20. 前端上传图片到oss对象存储

热门文章

  1. FPGA UART简单的串口接收模块
  2. SQL Server获取月度列表
  3. 移动开发平台-应用之星app制作教程
  4. CAM(内容可寻址存储器)的认知
  5. 【分享】华为总裁任正非谈企业管理:正确的方向来自于妥协
  6. 在图论中,网络流(Network Flow)
  7. 给金额字符串加逗号,例如:30000000000.50-30,000,000,000.50
  8. NoteBurner Spotify Music Converter mac - 音乐转换器
  9. MAC下安装和管理java
  10. 使用EasyRecovery来恢复丢失的视频