八个 Docker 的真实应用场景

【编者的话】Flux 7介绍了常用的8个Docker的真实使用场景,分别是简化配置、代码流水线管理、提高开发效率、隔离应用、整合服务器、调试能力、多租户环境、快速部 署。我们一直在谈Docker,Docker怎么使用,在怎么样的场合下使用?也许本文可以帮到你。有需要交流的地方,可以通过评论与我们交流。

几周前我们参加了DockerCon ,Dockercon是首个以Docker为中心的技术大会。它面向开发者以及对在Docker开放平台上构建、交付、运行分布式应用感兴趣的从业者,不 论这些开放平台是运行于自用笔记本上或者是数据中心的虚拟机上。我们参加了这次大会,Flux7是Docker基础的系统集成合作伙伴,同时也是演讲嘉 宾。

我们的CEO Aater Suleman和我们的一位客户一同进行了演讲。虽然DockerCon大会十分有趣,但我觉得大会太关注Docker的具体细节,而忽略了Docker的使用场景。所以,在这篇文章中,我想介绍并分享一些Docker的实际应用案例。

在我们讨论Docker的使用场景之前,先来看看Docker这个工具有什么特别的地方吧。

Docker提供了轻量级的虚拟化,它几乎没有任何额外开销,这个特性非常酷。

首先你在享有Docker带来的虚拟化能力的时候无需担心它带来的额外开销。其次,相比于虚拟机,你可以在同一台机器上创建更多数量的容器。

Docker的另外一个优点是容器的启动与停止都能在几秒中内完成。Docker公司的创始人 Solomon Hykes曾经介绍过Docker在单纯的LXC之上做了哪些事情,你可以去看看。

下面是我总结的一些Docker的使用场景,它为你展示了如何借助Docker的优势,在低开销的情况下,打造一个一致性的环境。

1. 简化配置

这是Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平 台(软件、系统),Docker在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在 不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。

2. 代码流水线(Code Pipeline)管理

前一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。

3. 提高开发效率

这就带来了一些额外的好处:Docker能提升开发者的开发效率。如果你想看一个详细一点的例子,可以参考Aater在DevOpsDays Austin 2014 大会或者是DockerCon上的演讲。

不同的开发环境中,我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境,二是我们想快速搭建开发环境。

理想状态中,要达到第一个目标,我们需要将每一个服务都跑在独立的虚拟机中以便监控生产环境中服务的运行状态。然而,我们却不想每次都需要网络连 接,每次重新编译的时候远程连接上去特别麻烦。这就是Docker做的特别好的地方,开发环境的机器通常内存比较小,之前使用虚拟的时候,我们经常需要为 开发环境的机器加内存,而现在Docker可以轻易的让几十个服务在Docker中跑起来。

4. 隔离应用

有很多种原因会让你选择在一个机器上运行不同的应用,比如之前提到的提高开发效率的场景等。

我们经常需要考虑两点,一是因为要降低成本而进行服务器整合,二是将一个整体式的应用拆分成松耦合的单个服务(译者注:微服务架构)。如果你想了解为什么松耦合的应用这么重要,请参考Steve Yege的这篇论文,文中将Google和亚马逊做了比较。

5. 整合服务器

正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。

6. 调试能力

Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。你可以在《Docker拯救世界》的文章中找到这一点的例证。

7. 多租户环境

另外一个Docker有意思的使用场景是在多租户的应用中,它可以避免关键应用的重写。我们一个特别的关于这个场景的 例子是为IoT(译者注:物联网)的应用开发一个快速、易用的多租户环境。这种多租户的基本代码非常复杂,很难处理,重新规划这样一个应用不但消耗时间, 也浪费金钱。

使用Docker,可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉,当然这一切得益于Docker环境的启动速度和其高效的diff命令。

你可以在这里了解关于此场景的更多信息。

8. 快速部署

在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker的虚拟化技术将这个时间降到了几分钟,Docker只是创建一个容器进程而无需启动操作系统,这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性。

你可以在数据中心创建销毁资源而无需担心重新启动带来的开销。通常数据中心的资源利用率只有30%,通过使用Docker并进行有效的资源分配可以提高资源的利用率。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-07-31 00:04:40

八个 Docker 的真实应用场景的相关文章

八个Docker的真实应用场景

本文讲的是八个Docker的真实应用场景,[编者的话]Flux 7介绍了常用的8个Docker的真实使用场景,分别是简化配置.代码流水线管理.提高开发效率.隔离应用.整合服务器.调试能力.多租户环境.快速部署.我们一直在谈Docker,Docker怎么使用,在怎么样的场合下使用?也许本文可以帮到你.有需要交流的地方,可以通过评论与我们交流. 几周前我们参加了DockerCon ,Dockercon是首个以Docker为中心的技术大会.它面向开发者以及对在Docker开放平台上构建.交付.运行分布

前端也应该了解点 docker 知识:docker 的理念与场景

我觉着你是看了题目点进来的.前端和 docker 这俩八竿子打不着的有毛关系?那接下来我们就扯一扯,看看能不能把它俩扯一块. 首先得达成共识,现在的前端已经不是以前的狭义的前端,如果指狭义的前端,那真是半毛钱关系都没有.但你我不可否认的是,现在是大前端的时代.什么是大前端,详细的应该大老板来给解释下,但是这里还是简单的去说一下: 前端有了 Node.js,扩展到了服务端的边界,未来有更多的可能. 前端现在也逐渐的正规化,工程化,编译,测试,发布逐渐完善. 我们是工程师,技术工种,抛开限定,多了解

Apache Mesos的真实使用场景

本文讲的是Apache Mesos的真实使用场景,[编者的话]文中内容来源于stackoverflow上的一个问题 ,提问者想知道Mesos在实际的使用中都有哪些使用场景,来自Twitter的工程师从容器编排.资源利用率.优先级和资源抢占.以及服务运行等几个角度,对问题进行了回答. 我尝试探究用户使用Mesos的原因究竟有哪些,以下是暂时列出的几个要点,不知道还有没有其他的例子? 1)让用户把所有的服务都运行在同一个集群中而不是运行在专用的集群中(比如通过终端应用的集群+DevOps的方式,例如

Docker的典型应用场景

相对于VM,docker在其轻量.配置复杂度以及资源利用率方面有着明显的优势. 随着docker技术的不断成熟,越来越多的企业开始考虑通过docker来改进自己的IT系统. 本文列举一些docker的实际应用场景,以期能够起到抛砖引玉的作用, 来帮助大家更加方便的使用docker. 应用打包 制作过RPM.GEM等软件包的同学可能很清楚,每一个软件包依赖于哪个库的哪个版本, 往往需要明确的写在依赖列表里.而依赖又往往分为编译时依赖和运行时依赖. 在传统的基础设施环境下,为了保证所生成的软件包在其

探讨医疗人工智能之眼科AI的真实应用场景(肽积木CEO柏文洁)丨硬创公开课

雷锋网按:目前全球范围内大约有 4.15 亿的糖尿病患者,单是中国就有 1.1 亿左右,而糖尿病视网膜病变致盲问题也愈发受到人们的关注. 据悉,只要在发病初期定期进行眼底检查,失明风险可下降 94.4%.但由于眼底病灶微小,部分医生经验不足等原因,使得诊断中可能出现漏诊.误诊的情况,因此,借助 AI 辅助诊断是未来的一大趋势. 那么如何将人工智能应用在眼底检测当中,雷锋网(公众号:雷锋网)邀请医疗影像公司肽积木CEO柏文洁做了一期以<探讨医疗人工智能之眼科AI的真实应用场景>为主题的公开课,从

Docker入门教程(八)Docker Remote API

本文讲的是Docker入门教程(八)Docker Remote API,[编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote API. 在Docker系列教程的上一篇文章中,我们学习了Docker Hub 以及 Docker Registry API.在本文中,让我们来看看Docker Remote API. Docker Remote API Docker Remote API是一个取代远程命令行界面(rcl

【实战】Docker的典型应用场景

本文讲的是[实战]Docker的典型应用场景,[编者的话]Docker技术已日趋成熟,但很多新接触Docker的朋友可能对「Docker到底能用来干什么」这一问题比较纠结.本文总结了一些作者在应用打包.多版本混合部署.升级回滚.多租户资源隔离以及内部开发环境方面使用Docker的一些经验,希望能抛砖引玉,给Docker的观望者一些启发. 相对于VM,Docker在其轻量.配置复杂度以及资源利用率方面有着明显的优势. 随着Docker技术的不断成熟,越来越多的企业开始考虑通过Docker来改进自己

“楼楼”,基于真实楼宇场景下的半熟人社交产品

摘要: 咦,你说这城市化都这么多年了,小区邻里之间鸡犬之声相闻,老死不相往来也这么久了,咋这人们还是不习惯,还是怀念祖先们在街坊蹲一圈唠嗑的热络?我不知道你们大多数人怎么 咦,你说这城市化都这么多年了,小区邻里之间"鸡犬之声相闻,老死不相往来"也这么久了,咋这人们还是不习惯,还是怀念祖先们在街坊蹲一圈唠嗑的热络?我不知道你们大多数人怎么想,反正我看到这个主打同一栋楼内社交的"楼楼"时,我的心声是,"Damn it,总算有人做这事儿了." &quo

Docker技术这些应用场景,你知道吗?

场景一:节省项目环境部署时间 1.单项目打包 每次部署项目到测试.生产等环境,都要部署一大堆依赖的软件.工具,而且部署期间出现问题几率很大,不经意就花费了很长时间. Docker主要理念就是环境打包部署,可在任意Docker Engine运行.前期我们只需要将每个项目环境打包到镜像,push到镜像仓库,当有需要部署这个项目时,直接pull镜像启动容器,这个项目就可以访问了!一次构建多次部署,一劳永逸. 2.整套项目打包 公司有一项这样的业务:有一个产品可以整套部署到客户那里,以往都是派一名实施工