Docker应用场景

标签: docker 应用 | 发表时间:2016-01-17 00:08 | 作者:noreply@blogger.com (AaronZhang)
出处:http://denghuo-lanshan.blogspot.com/

See; http://www.cnblogs.com/zz123/p/4080219.html


  • Flynn:一个使用go语言编写的开源PaaS平台,目标是简化分布式环境中应用的部署和维护,可以通过git push命令,将应用部署到Docker,从而省去复杂的配置和操作。
  • CoreOS:一种新的架构体系重新设计的Linux发型版,可以运行在既有的硬件活着云服务器上。CoreOS不提供类似yum或apt的包管理工具,用户不需要在CoreOS中安装软件,而是让程序都在Docker容器中运行。
  • Fig:是一个基于Docker的用于快速搭建开发环境的工具,目前Fig团队已经加入Docker公司。
  • Kubernets:来自Google的容器集群管理工具,支持跨平台。目前已经得到微软,IBM,红帽,CoreOS等公司的支持。
  • Boot2Docker:专为Docker设计的轻量级Linux发型包,解决Windows或OS X用户不能安装Docker的问题。
   什么是Docker。Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、相互隔离的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、OpenStack 集群和其他的基础应用平台。 
   Docker应用场景
  • web应用的自动化打包和发布。
  • 自动化测试和持续集成,发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境等。
本文主要介绍docker在大数据方面的应用,经过一段时间的研究和实际操作,提出了Hadoop on Docker架构。大概思路就是将硬件(或云服务器)通过Docker搭建成为一个“超级服务器”,这里的超级是指,拥有足够的CPU,内存,并且提供7*24小时不宕机服务(除非同一时间所有物理主机全宕机)。每个Docker容器作为超级服务器资源的一个实例,可以根据需求动态增加实例,以满足计算性能要求。下图是整个Hadoop on Docker的架构
从上自下,依次为:
  • Zookeeper:协调集群中物理主机之间的同步,包括维护一张每个服务器上运行着的容器名单,所有服务器上Docker容器的ip域名映射表(动态更新),Docker容器配置。
  • Server:上面运行着很多docker容器,每个容器运行着特定功能的服务。把应用打包到容器中运行的好处是,应用间是相互隔离的,一个容器宕掉不会影响主机上及其他容器,并且在创建容器的时候可以定制不同的资源(CPU,内存等)。
  • FS:外部文件系统有两个作用:
      1. 将datanode容器挂载到外部文件存储系统中,可以通过增加外部文件系统的磁盘大小来提高hdfs存储能力。
      2. 将所有配置文件存放在公共文件系统中,可以方便整个系统的配置管理,减少重复操作。
  • Yarn:资源管理系统,最终的目标是可以将不同的集群容器(storm,spark等)放在同一个yarn系统中,通过yarn的调度来为不同集群分配不同资源。
有人会有疑问:如今服务器已经很廉价,完全可以在不同服务器上运行不同服务,没必要使用docker。
如果硬件服务器对你来说确实是廉价的,以至于搭建100个节点的hadoop集群,大多数情况下运行mapreduce job的节点书不超过10个,剩余90台服务器常年处于休息状态,对你来说也无关紧要的话,我无话可说。抛开硬件成本不说,docker容器的隔离机制也是集群部署中的一大亮点!
本文的目的是通过docker容器,使用更少的硬件资源来运行同样的job,容器相对于服务器来说是更细粒度的资源。同时由于容器的隔离机制,一个容器发生故障并不影响到其他容器及宿主主机。此外这种架构还解决了单点故障问题,每台服务器运行着相同的docker镜像,通过定时向zookeeper发送心跳,来监控所有容器的健康状态,心跳是一份包含该服务器上所有运行着的容器的名单。那么有可能发生两种突发情况:
  • docker容器挂掉
  • 宿主主机宕机
对于第一种情况,由于心跳包含所有运行着容器的名单,当服务器某个容器挂掉,比如mysql意外终止,zookeeper通过两次心跳对比,发现缺少mysql,于是启动应急措施,重启该服务器的mysql容器。如果宿主主机宕机,zookeeper在一段时间内未接受该服务器的心跳,发现宕机,然后在其余剩下的服务器中重启上一次心跳名单中运行着的容器,如图所示
整个系统的实现还有一个前提,就是使不同宿主主机上的docker容器能够通信,可以参见 这篇
最终的目的是使整个架构看起来像在一台超级服务器(cpu,内存足够大,并且永不宕机)上运行hadoop。

相关 [docker 应用] 推荐:

Docker应用场景

- - 灯火阑珊
Flynn:一个使用go语言编写的开源PaaS平台,目标是简化分布式环境中应用的部署和维护,可以通过git push命令,将应用部署到Docker,从而省去复杂的配置和操作. CoreOS:一种新的架构体系重新设计的Linux发型版,可以运行在既有的硬件活着云服务器上. CoreOS不提供类似yum或apt的包管理工具,用户不需要在CoreOS中安装软件,而是让程序都在Docker容器中运行.

golang的杀手级应用:docker

- - _不是我干的 _
docker 是 golang 的第一个杀手级应用,发展迅猛, 现在各大云计算平台几乎全都支持 docker 实例,包括 谷歌,亚马逊,阿里云等. golang 本身已经让我惊喜万分,而 docker 更是极大的激发了我对虚拟化的想象. IT 业发展至今,软件和硬件始终是无法分割的两个物体. 就拿最近几年红红火火的智能机时代来说, 很久之前的诺基亚智能机, 软件和硬件相辅相成, 连进入主界面都需要按一个特定的按钮才能进入.

利用docker快速部署应用

- - snoopyxdy的博客
最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维,省得每次部署一台新服务器都去跑安装脚本了,对于我们开发人员也是好事情,无需写太多重复的部署文档,直接将docker的images丢上服务器就可以运行了. 安装很简单,直接进入下载页面,根据自己的操作系统下载相对应的安装包即可,下面说一下windows安装:.

八个Docker的真实应用场景

- - ITeye资讯频道
【编者的话】Flux 7介绍了常用的8个Docker的真实使用场景,分别是简化配置、代码流水线管理、提高开发效率、隔离应用、整合服务器、调试能力、多租户环境、快速开发. 我们一直在谈Docker,Docker怎么使用,在怎么样的场合下使用. 有需要交流的地方,可以通过评论与我们交流. 几周前我们参加了 DockerCon ,Dockercon是首个以Docker为中心的技术大会.

减少使用Java应用服务器,迎接Docker容器

- - ITeye资讯频道
【编者的话】随着Docker的发展,越来越多的应用开发者开始使用Docker. James Strachan写了一篇有关Java开发者如何使用Docker进行轻量级快速开发的文章. 他告诉我们,使用Docker和服务发现的机制,可以有效减轻Java运维人员的负担,进行项目的快速启动和持续迭代. 多年来,Java生态系统一直在使用应用服务器.

在Docker中监控Java应用程序的5个方法

- -
作者:Chris Ward . 译者注:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 通常情况下,监控的主要目的在于:减少宕机时间、扩展和性能管理、资源计划、识别异常事件和故障排除分析等. 本文作者介绍了5种方法帮助你在Docker中监控Java应用程序.

docker初体验之docker-tomcat

- - BlogJava-首页技术区
docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker. daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器.

微服务应用-基于Spring Cloud和Docker构建电影推荐微服务

- - CSDN博客推荐文章
使用Spring Cloud和Docker构建电影推荐微服务. 如果你对云应用很了解,可以直接移步下载运行项目(https://github.com/kbastani/spring-cloud-microservice-example),或跳转到部署步骤,. 本博客系列将向你介绍一些使用Spring Cloud和Docker构建微服务平台的基本概念.

docker - 从安装到部署一个web应用(go、java) - CSDN博客

- -
1.权限是root,不是则先提升权限. 下载docker最新版二进制tar.gz. linux下: wget https://get.docker.com/builds/Darwin/x86_64/docker-1.11.0.tgz. docker官方镜像仓库由于有墙,所以下载的很慢. 如此一来,tomcat就启动了,-p 5000:8080的意思是把容器tomcat的8080端口隐射到宿主机的端口上,这样外网访问5000就能访问到我们的container1的8080 tomcat上面了..

docker使用场景

- - 开源软件 - ITeye博客
Docker应用容器相对于 VM 有以下几个优点:. 1、启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久. 2、资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试. 3、性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源. 因为VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销.