为什么Docker不能解决云上的所有问题

本文讲的是为什么Docker不能解决云上的所有问题【编者的话】本文作者主要讲述了将业务迁移至Docker或者容器上需要了解的问题以及实现考虑的事情。很认同作者说的“having a powerful engine doesn’t get you far if you don’t have the rest of the car built to support it(即使有强大的引擎,缺少飞车的其余部件,你也不能走的更远)”,所以Docker只是一个引擎,真正应用到生产环境,还需要Kubernetes等相关工具的支持。

【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享。

Docker和其他容器服务极具吸引力的原因是它们轻巧灵活。对于许多公司来说,为了让平台成熟度更上一层,他们希望将运行时的资源需求减少到和裸机运行一致(至少这是他们的意图)。

当你深入研究容器所带来的好处时,很容易看出为什么这么多公司已经开始着手:

  • 容器化他们的app以及支撑服务
  • 实现隔离
  • 减少环境差异
  • 尽可能提升部署周期

对于规模小、松耦合的软件开发模式,能够更好地围绕容器化进行架构设计。我们(作者)是Threat Stack的大粉丝,我们持续投入资源支持那些依赖于Threat Stack的客户。实际上,我们最近发表官方声明我们的代理服务(agent)已经支持CoreOS。

不过,我们发现对于Docker以及其他容器服务的疑惑并不少见(考虑到容器服务快速成长与变化速度,这并不奇怪),比如说:

  • 如何实现容器的好处
  • 对基础设施/运营的影响
  • 对整体SDLC和Ops流程的影响

当然,容器是有很多好处,它提供了很好的方式让你探寻如何为你的公司更好地应用容器。不过,我们最好是能够先剥离其外表的酷炫,找到更好应用容器技术的方式。

为什么是Docker?为什么是现在?

许多公司目前正在运行大量的AWS实例用以加速新的应用程序、服务、数据库等,从而扩大自身业务。当从业务量特别小开始扩张时,会逐步感受到其带来的各种类型的开销:

  • 复用宿主机操作系统的计算资源
  • 与应用程序无关的大量进程
  • 管理更多的实例

这将导致无节制扩张、核心思想的不一致以及流程与预算挑战。财务部门希望了解Ops团队如何规划他们的增长和支出,安全团队会尽量插足业务增长情况,以确保公司达到其安全策略的目标,而工程师希望获知如何能够在他们需要快速部署的新组件上得到足够的灵活性。与此同时,业务还需要不断增长。

因此,一个关键问题是:我们该如何优化我们的流程,优化我们AWS环境(用以省钱),同时还能做我们需要做的事情?

Docker - 至少在表面上 - 似乎为这个难题提供了一个答案。

我们从具有很多AWS实例的公司那了解到一个常见的共同主题是通过增加单个实例配置和其上运行容器的规模来减少原始实例的数量。

例如,你有600个AWS实例,每个实例具有1个CPU和4-5GB的内存,那么你可能会思考可以通过Docker容器将AWS实例减少到100个,而每个实例具有32个GPU和64GB内存。然后你就可以减少AWS上的花费,因为你拥有了更少的实例数。这是正确的吗?其实没那么简单。

转向容器前应该思考什么

在短期内,上述变化可能适用于某些用例。但从长远来看,与许多技术选型一样,你正在为另一种方式提供一套复杂性。为什么?

一种全新的技术栈

随着你开始大规模运行容器,你需要投入资源到一个管理与编排平台用以管理你的容器和资源。这需要一个容器自身的整体技术栈。

而且由于容器的使用模式仍然是一个比较新的课题,因此没有很多最佳做法可以参考借鉴,所以制定策略的过程取决于具体的实现,这将意味着生产和公司投入需要持续的迭代,这可能会影响交付计划。

管理度挑战

应用容器的其他较大挑战包括:

  • 如何管理容器
  • 如何保持容器可见性
  • 如何知道何时使用容器是适当的解决方案(何时又不是)

目前,就上述三个问题,我们能够找到很多“Docker合理化”建议。这就意味着很多公司正在转向容器化方案,因为他们能够解决他们遇到的具体用例。这是一件好事(演变的发生需要不断地迭代),但是当需要确定对于平台可用性、安全性以及成本效率的影响时,最好是提前制定出一套清晰的用例目标。

安全风险

虽然从表面上看将你的工作负载迁移到容器上是有意义的,但难题经常发生在细节处理上。随着容器具备更大的自由性与可选性,我们需要管理新的风险类型。 对于容器而言,安全性可能是非常具有挑战性的,因为你没有靠得住的最佳实践可以依赖。

随着你业务的扩展,你将需要了解如何对你正在使用的镜像,它们的构建方式以及提供给进程的访问范围进行适当的控制。你应该事先知道如下问题的答案:

  • 开发人员是否被允许登录一个生产环境运行中的容器?
  • 所有容器是否保持不变?
  • 我们该怎么管理容器镜像大小?

一开始就明确这些问题的答案将有助于让你的实现过程清晰明确。

真诚面对挑战

很多公司正在揭露容器复杂性方面所遇到的挑战,我们所了解到的一些难题如下:

  • 需要使用哪种类型以及相应数量的实例来运行这些容器?并且,真正的性能瓶颈是什么?
  • 由于工作负载的特点随着时间的推移而变化,如何知道容器基础设施需要进行适配以及重新建模?
  • 如何处理规模伸缩问题?何时向上扩展?何时向外扩展?该怎么减少外层规模而不引入SPoF?
  • 如何处理容器的安全性,进程运行在容器中,它们可以访问哪些容器外部事物?

问题会从很多维度产生。需要谨记的最重要的事情之一是,尽管Docker确实可以帮助你运行得更快,但即使拥有强大的引擎,缺少构建飞车的其余部件,也不能让你走的更远。

未来是光明的

很明显,容器是云计算基础设施未来的重要组成部分,我们在Threat Stack中正在拥抱容器。我们希望看到越来越多的公司能够以开放的态度应用容器技术,从而与容器化中固有的风险认知相平衡。

好消息是将你的工作负载迁移到容器中并不会真正减少可见性,但你必须意识到Docker不能解决云上的所有问题,就像任何其他技术一样,应该用乐观和怀疑的态度来应用它。

原文链接:Why Docker Can’t Solve All Your Problems in the Cloud(翻译:肖远昊)

原文发布时间为:2017-07-23

本文作者:肖远昊

原文标题:为什么Docker不能解决云上的所有问题

时间: 2024-10-25 03:32:56

为什么Docker不能解决云上的所有问题的相关文章

避免单点,云上应如何实现网站高可用和高性能架构设计(系列干货)

推荐系列文章(陆续更新): 微博混合云DCP:极端流量下的峰值应对与架构挑战 千万级用户直播APP--服务端结构设计和思考 空格App亿元A轮融资背后:云上多场景技术架构实践与经验 美柚:最懂女性App背后的混合云架构与大数据服务 涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维 微博:春节日活跃用户超一亿,探秘如何实现服务器分钟级扩容 业务需要全球部署?来看看企业级全球网络架构与解决方案 银泰网上云之路引发混合云关键考虑 架构分析.数据整合.负载均衡,梦想旅行解析云上实践 虎嗅:四年覆盖9

阿里云上SAP高可用配置

1.部署架构          比较典型的SAP应用是搭建在小型机UNIX系统上的,小型机都有厂家提供的HA软件,比如IBM的PowerHA.这样的方案也是被SAP认证通过的.目前,SUSE LINUX也是被SAP认证通过的,但是在云上,尤其是HA的方案,还没有完全成型,本文档重点探索的就是如何在阿里云ECS Linux环境搭建一套可行的HA方案提供给SAP系统使用.          我们以SAP AFS(Apprarel and Footwear Solution),即SAP在服装鞋帽行业的

远程调试阿里云上的NodeJS Docker应用

云端调试 代码部署到了云上以后,如果想进行远程调试就不想本地调试那么方便了.一旦出现问题,大家会通过读日志文件的方式猜测修改.阿里云容器服务提供了集中日志输出的能力,省却了开发人员自己登录到每台机器上去读日志的痛苦.如果代码在本地运行得很好,在云上却不对,通过日志方式能够发现大部分错误. 但是,但是,总有那么一些时候,读日志不能解决所有问题,开发人员还是需要登录到云上远程调试代码. 我们今天就进行一个这样的尝试,远程调试NodeJS代码.基本思路是通过支持远程调试的IDE连接到云端进行调试.ID

在阿里云上体验Docker 1.12的路由能力和容器应用分发部署

阿里云容器服务团队将为大家奉献一系列深入学习的文章来帮助大家了解Docker 1.12的最新动态. 第一部分:在阿里云上体验Docker 1.12内置的编排能力 第二部分:在阿里云上体验Docker 1.12的路由能力和容器应用分发部署 (本文) 简述 Docker 1.12除了提供内置的编排能力,也提供了服务路由支持 routing mesh,和新的多容器应用分发和部署机制. 这里我们先介绍两个概念 分布式应用打包 (Distributed Application Bundle,简称DAB):

云上应用docker化持续交付实践 — 【包含Qcon讲稿】

因为我非常啰嗦,所以写的分享也太长,全部内容被内部同学review后的反馈是: 像看小说一样-- 所以为了防止大家看了开头就去逛别的小网站了,开篇我先点个题, 这篇文件最终的目的是讲清楚下面这张图:  就是一个完整的,应用Docker化持续交付需要做的事情. 并且,这篇文章不是硬广, 图中涉及到的服务也是基础服务,提供便捷的配置方式,最佳实践的推荐. 我们并不去定义标准和规范,会兼容业内所有的规范和标准的玩法. 下面开始正文: 本文涉及到的平台有: 阿里云持续交付平台 https://crp.

DockerCon 2016 深度解读:在阿里云上体验Docker 1.12内置的编排能力

昨天才从DockerCon大会归来,阿里云容器服务团队将为大家奉献一系列深入学习的文章来帮助大家了解Docker 1.12的最新动态. 第一部分:在阿里云上体验Docker 1.12内置的编排能力 (本文) 第二部分:在阿里云上体验Docker 1.12的路由能力和容器应用分发部署 在DockerCon第一天的Keynote里面,Docker CTO Solomon Hykes宣布Docker将提供内置的编排(Orchestration)能力,从而能使得Docker Engine原生支持集群管理

阿里云上Docker企业版之旅

阿里云上Docker企业版之旅 6月9号,Docker中国网站正式发布.在Docker中国官方镜像加速上线的同时,Docker企业版也可以从阿里云的云市场在线购买和试用了. Docker企业版基于社区版增加了面向企业的管理和安全能力,Docker企业版在国内由阿里云和Docker联合提供技术支持,为企业客户提供稳定.安全.可以信赖的容器应用平台.本文将介绍如何在阿里云上试用原汁原味的Docker企业版. 购买Docker企业版试用授权 首先访问阿里云云市场中Docker 企业版售卖页: http

云上Docker的Spring Cloud微服务应用实践分享

本文整理自2017云栖大会-上海峰会中阿里云高级技术专家李荣陆的分享讲义,讲义主要介绍了云上Docker的Spring Cloud微服务应用实践的契机,过程,和对未来的展望.

在阿里云上运行ASP.NET Docker应用

微软的.NET开源后可以运行在Mac和Linux平台,也支持运行在Docker容器里.我们今天要尝试的是在Mac上开发一个.NET应用,并且把它用Docker跑起来,然后部署到阿里云容器服务上. 本文的后续文章介绍了如何访问SQLServer数据库,点击[在Docker中运行SQLServer ASP.NET应用].(https://yq.aliyun.com/articles/60857) 在Mac上安装.NET Core 按照微软的官方文档,我们可以非常容易地在Mac上安装.NET Core