通过提前bake Docker镜像加快基础设施的启动速度
发布时间 - 2026-01-10 22:39:30 点击率:次我之前概述过加速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 images
become: true
command: 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这种做法对任何团队来说,都能在创建新实例的时候节省等待时间。
# docker
# 镜像
# 国内镜像仓库
# bake
# Docker镜像
# 简单谈谈Docker镜像的使用方法
# Docker 下载镜像慢的问题解决方法
# 利用Docker制作Nginx+PHP镜像的步骤详解
# Docker for windows pull镜像文件的安装位置改变的方法
# 两种方式创建docker镜像的启动容器时区别介绍(总结篇)
# Docker push镜像失败解决方法
# Docker在CentOS7下不能下载镜像timeout的解决办法(图解)
# 深入了解docker(docker镜像、容器、仓库的基本概念)
# Docker创建镜像两种方法详解
# 亚马逊
# 多个
# 所需
# 越快
# 就可以
# 基础设施
# 他们的
# 都有
# 也就
# 也没
# 还会
# 还不
# 先发制人
# 你知道
# 将其
# 也可
# 能在
# 我们可以
# 时间内
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建个人网站并优化SEO?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在新浪SAE免费搭建个人博客?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
使用豆包 AI 辅助进行简单网页 HTML 结构设计
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何快速生成橙子建站落地页链接?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何在橙子建站上传落地页?操作指南详解
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel API资源类怎么用_Laravel API Resource数据转换
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
javascript读取文本节点方法小结
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
个人网站制作流程图片大全,个人网站如何注销?
如何在阿里云通过域名搭建网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
浅述节点的创建及常见功能的实现
如何在阿里云购买域名并搭建网站?
如何基于云服务器快速搭建网站及云盘系统?
,网页ppt怎么弄成自己的ppt?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
,怎么在广州志愿者网站注册?
Java解压缩zip - 解压缩多个文件或文件夹实例
WEB开发之注册页面验证码倒计时代码的实现
Laravel如何实现事件和监听器?(Event & Listener实战)
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
免费视频制作网站,更新又快又好的免费电影网站?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何用美橙互联一键搭建多站合一网站?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
深圳网站制作平台,深圳市做网站好的公司有哪些?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何实现javascript表单验证_正则表达式有哪些实用技巧
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
C语言设计一个闪闪的圣诞树
php打包exe后无法访问网络共享_共享权限设置方法【教程】
如何为不同团队 ID 动态生成多个“认领值班”按钮

