大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

迁移到 Docker:濒临失控的混乱

  • 2016-07-06
  • 本文字数:1652 字

    阅读完需:约 5 分钟

作为一家提供对多云平台统一访问接口的公司,RightScale 帮助客户管理云计算提供商的 IT 流程。随着 Docker 的流行,该公司也开始关注这一概念。而且随着对 Docker 的了解,RightScale 公司发现了该容器的好处,并准备将软件开发和部署过程迁移到 Docker 中。Tim Miller 是 RightScale 公司的副总工程师,领导着公司的产品开发与部署工作。在 Tim Miller 的上一篇博客文章中,他讲述了 RightScale 决定要迁移到 Docker 的原因。之后,Tim Miller 又发表了 Project Sherpa 项目和我们为什么迁移到 Docker 的系列文章的第二篇,讲述了 Sherpa 项目的相关情况。最近,Tim Miller 又发表了该系列文章的第三篇,讲述了 Sherpa 项目启动一周后的进展。

第二篇文章发布后,Slack 相关的问题、回答和讨论给了 Sherpa 团队更多的信心和灵感。他们在上一周遇到的最大问题就是,随着解决问题的想法不断涌现,标准和约定变化太快。他们不得不抽时间来保证每个人处于同步的状态,从而保证对等的信息交换和标准不互相冲突。其实,在项目开始之前,他们已经在“Docker 圣经”中专门编写了开发和运维之间的接口合约。以下就是有关 Docker ENTRYPOINT 的一个例子:

  • Docker 镜像必须要有一个运行脚本的 ENTRYPOINT;脚本要能够针对两种类型的 bootstrap 请求做出响应:one-word 请求(只有 bootstrap 和 exit)和 two-word 请求(bootstrap 和进入服务)。
  • 应用必须要在启动时进行完整性检查,以确保它已经被 bootstrap。也就是说,其数据库语法存在,而且所有的迁移已经在运行。而如果它没有被 bootstrap,应用应该直接崩溃。
  • 即使是在 exit 0 的时候,应用也必须要将 bootstrap 命令字暴露出来。
  • 如果应用执行数据库迁移,它应该将运行迁移并 exit 0 的命令字暴露出来。
  • 如果应用运行某种 HTTP 服务器,它应该暴露 web 命令字。
  • 如果与运维合作,应用应该暴露出其他的命令字。例如,对于在集群和 shard 中行为不同的应用而言,web-master 和 web-shard 就很常见了。
  • 除了 bootstrap,每个镜像必须支持的命令字没有额外的要求。

随着 Sherpa 团队越来越多的成员开始使用 Docker,他们的标准在第一周变化的非常快。其中一个变化就是处理 Docker entrypoint 和命令的更简单的新方法。由于他们准备容器化的很多服务都是在微服务出现之间构建的,他们必须要完成更多工作;一个给定的 SCM 库将包含一个 REST API 以及后台进行脚本处理的实例。因此,其镜像拥有不止一个“特性”。当他们从中运行容器时,就需要指定“特性”。

为了减轻运行正确“特性”/ 命令的复杂度和保证应用的数据是兼容的,他们在不同库之间共享了一些样例性的 shell 脚本,然后复制 / 粘贴。而其中一名工程师发明了一种更简单的方法——将一个可重用脚本放入运维团队的基本镜像中,并允许单独的应用拥有一个描述可用命令的配置小文件。

在第二周,有关输入和部署细节的标准变化将开始慢慢变少。而他们一旦开始研究监控和警告,Sherpa 团队肯定会遇到新一波的混乱。而 RightScale 的工程师也非常喜欢作为一个团队来完成 Docker 迁移。正如他们所言:

“所有人都在做同样的一件事情实在是非常有趣。遇到的问题可以从各个方面得到解决方案,而这些解决方案又可以应用到多个团队的多个容器化项目中。”

而且,他们也取得了非常大的进展——三个服务已经完全容器化,而团队未来也能够保持这样的速度。他们还从中获得了其他好处:

“因为服务被容器化了,其运行速度是以前的三倍,消耗的内存却只有之前的一半。”

接下来,他们就要开始向第二周进发啦!

想了解更多 Tim Miller 团队如何使用 Docker 的内容,可以观看其在线研讨会。它包括了:

  • 安全产生高质量、易于管理的 Docker 镜像的建议
  • 在笔记本和云之间多宿主机互联的建议
  • 在产品中编排 Docker:服务发现、配置以及可审核性
  • Docker 带来的宿主机密度的增加
  • 用于 Docker 容器的动态监控和警告

感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-07-06 17:144124
用户头像

发布了 268 篇内容, 共 132.2 次阅读, 收获喜欢 24 次。

关注

评论

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

Java学习笔记在互联网上火了,linux视频教程在线,面试官让我下周来上班

Java 程序员 后端

Java开发人员不得不收集的代码,精选Java面试真题集锦

Java 程序员 后端

Java开发从零开始,牛客网java选择题库,程序员Javaweb源码

Java 程序员 后端

Java外包是如何转正网易的,面试阿里的时候一定会问到的

Java 程序员 后端

看山聊 Java:从零实现“百度网盘批量重命名”工具

看山

Java 工具集 10月月更

Java学习笔记在互联网上火了,帮你深度探寻Spring循环依赖源码实现

Java 程序员 后端

Java并发原理解析!图灵学院四期java架构师,Java零基础入门视频

Java 程序员 后端

XA 分布式事务

风翱

分布式事务 10月月更

Java开发中遇到最难的问题,redis视频教程韩顺平,附小技巧

Java 程序员 后端

Java大厂高级面试题灵魂100问,linux操作系统教程pdf,卧槽

Java 程序员 后端

Java就业班资料,极客大学算法训练营百度网盘,Java面试总结

Java 程序员 后端

Java开发三年月薪才12K,java图形化界面教程,linux网络架构详解

Java 程序员 后端

Java开发五年,java百度人脸识别,最全153道Spring全家桶面试题

Java 程序员 后端

Java开发从零开始,java基础入门传智播客网页版,Java后端路线图

Java 程序员 后端

Java学习路线指南,思维导图+源代码+笔记+项目

Java 程序员 后端

Java就业班视频,尚硅谷众筹项目视频及源码,spring框架教程

Java 程序员 后端

最近几天在 InfoQ 连更的再反思

baiyutang

10月月更

Java大神需要掌握的技术,java开发技术教程,字节大牛教你手撕Java学习

Java 程序员 后端

Java工程师进阶,马士兵架构师破解吧,我的Java春季历程

Java 程序员 后端

Java小技巧,springboot菜鸟教程电子版,腾讯T2手把手教你

Java 程序员 后端

Java岗面试必问!java面试题pdf下载百度云,Java程序员算法书籍

Java 程序员 后端

Java工程师面试该怎么准备,尚硅谷java百度网盘,Java技术图谱

Java 程序员 后端

Java多态实现原理解析,掌握这套精编Java高级面试题解析

Java 程序员 后端

Java学习笔记在互联网上火了,Java开发实战讲解

Java 程序员 后端

【大咖直播】Elastic Security 安全管理实战工作坊(第二期)

腾讯云大数据

elasticsearch

Java小技巧:尚学堂视频百度云密码,靠着这份900多页的PDF面试整理

Java 程序员 后端

Java工作资料,java编程思想第五版百度云,面试官6个灵魂拷问

Java 程序员 后端

Java工程师最容易遇到4个瓶颈是什么,Java架构面试题spring原理

Java 程序员 后端

Java开发人员不得不收集的代码,史上最全的微服务专业术语面试50问

Java 程序员 后端

Java大厂74道高级面试合集,我凭借这份PDF的复习思路

Java 程序员 后端

Java官方入门教程pdf,开课吧在线教育,面试分享一次成功的经历

Java 程序员 后端

迁移到Docker:濒临失控的混乱_语言 & 开发_Tim Miller_InfoQ精选文章