开发者社区> 问答> 正文

目前来说,Docker很火,看起来也很不错,但是具体的应用有哪些呢?

阿里内部是否进行的了Docker化?哪些业务运行在Docker上呢?如果传统的应用想要上Docker,需要注意哪些问题呢?

展开
收起
西秦说云 2016-03-25 11:16:13 8651 0
3 条回答
写回答
取消 提交回答
  • 阿里内部大面积应用,相应的开源版本名字叫 Pouch, 可以再 github 上搜索到

    2019-07-17 18:35:48
    赞同 展开评论 打赏
  • 阿里云容器服务的高级研发工程师,花名溪恒,专注于容器底层技术和网络
    1. 阿里内部的阿里云,淘宝,支付宝等很多部门都在docker化了。
    2. 如果对于传统的应用上docker,需要注意哪些问题:
      docker的优势上面51干警网的回答中已经挺全面了,我主要介绍下传统应用如果想要享受这些优势需要注意的地方以及做出的改变:

      1. 首先,要享受容器的动态扩展的特性,容器需要是一个无状态的应用,它需要可以随时的启动,停止,这样才可以可以随时的扩容和缩容,然后可以通过负载均衡对外提供一致的服务,其中包括:

        • 通过Dockerfile完成镜像的自动化构建,然后通过镜像去部署的容器环境都是一致的。
        • 不在容器的应用中单独记录与保存状态,这样可以保证在容器起停的时候不会造成数据的不一致,状态信息可以采用zk,数据库,挂载volume来共享。
      2. 其次,需要集群管理以及编排的工具去管理大量的容器:

        • 通过swarm, k8s, mesos等工具管理服务与容器之间的关系
        • 通过docker compose等编排工具描述服务间的依赖以及部署关系
      3. 最终迁移到容器上还需要将构建一系列的微服务适配的服务和工具:

        • 监控,监控容器的状态,然后做服务的动态扩容等
        • 日志,容器没有状态,随时可能被释放掉,但容器中应用的日志需要采集
        • 网络,应用多容器的负载均衡,服务容器间的网络互通
        • 服务发现,注册和发现服务
    2019-07-17 18:35:48
    赞同 1 展开评论 打赏
  • 阿里云论坛版主,QQ 1978638808
    1. 简化配置
      这是Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),Docker在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。
    2. 代码流水线(Code Pipeline)管理
      前一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
    3. 提高开发效率
      这就带来了一些额外的好处:Docker能提升开发者的开发效率。如果你想看一个详细一点的例子,可以参考Aater在DevOpsDays Austin 2014 大会或者是DockerCon上的演讲。

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

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

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

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

    1. 整合服务器
      正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。
    2. 调试能力
      Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。你可以在《Docker拯救世界》的文章中找到这一点的例证。
    3. 多租户环境
      另外一个Docker有意思的使用场景是在多租户的应用中,它可以避免关键应用的重写。我们一个特别的关于这个场景的例子是为IoT(译者注:物联网)的应用开发一个快速、易用的多租户环境。这种多租户的基本代码非常复杂,很难处理,重新规划这样一个应用不但消耗时间,也浪费金钱。

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

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

    1. 快速部署
      在虚拟机之前,引入新的硬件资源需要消耗几天的时间。虚拟化技术(Virtualization)将这个时间缩短到了分钟级别。而Docker通过为进程仅仅创建一个容器而无需启动一个操作系统,再次将这个过程缩短到了秒级。这正是Google和Facebook都看重的特性。

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

    2019-07-17 18:35:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
应用 Docker 进行持续交付:用技术改变交付路程 立即下载
从Docker到容器服务 立即下载
构建基因数据应用生态系统—— docker in Bio/informatics 立即下载