设为首页 收藏本站
查看: 1297|回复: 0

[经验分享] 一个简单易用的容器管理平台

[复制链接]

尚未签到

发表于 2017-6-22 07:39:41 | 显示全部楼层 |阅读模式
什么是Humpback?
  项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~
  在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker)。
  在 Docker-百度百科 中,对 Docker 已经解释得很清楚了。
  简单来说,Docker可以帮助我们以容器的方式快速运行APP。
  由于一个镜像就是一个完整的 APP,只要我们构建好镜像,我们就可以快速,一致的在多个地方运行同样的 APP。这虽然解决了 APP 一致性的这个问题,但是,我们在部署的时候,依然要远程到服务器上,拖镜像,通过一长串命令(端口映射,磁盘映射,环境变量等的配置)来启动Docker容器。
  这是一个重复而容易出错的过程,Humpback 就是为了解决该问题而生(当然,我们已经扩展了更多的功能:如集群管理,镜像构建,私有仓库管理等)。
  那现在来回答什么是 Humpback,Humpback 是一个简单易用的轻量级容器管理平台,一个私有仓库管理平台,一个容器调度平台。
  那它能做什么呢?


  • 以 Web界面 的方式,来进行容器的创建/运行以及管理(启动,停止,重启,监控,应用版本升级/回退)。 ★★★★★
  • 镜像构建,将镜像所需文件和Dockfile打包为 .tar.gz 文件,就可以打包为一个镜像 ★★
  • 管理私有仓库,将自己部署好的私有仓库,纳入到humpback的管理中。 ★★★★
  • 集群容器调度,当我们部署一个app时,只需要告诉humpback,我要部署多少个实例,humpback会自动根据配置进行集群部署,并通过WebHook通知部署结果。 ★★★
  • 对容器管理进行权限设定。 ★★
  注:星级表示功能的常用程度,五星为最常用的功能。
  差点忘了贴官方文档和Github地址,罪过!
  Humpback官方文档
  Github 开源汇总地址
  Github Humpback 组织

部署Humbpack
  说了这个多,有没有想尝试下使用 Humbpack 进行容器管理?易用,不仅体现在真正的使用上,还需要能够简单部署。
  接着,我们就看一下应该如何部署 Humpback:


  • 安装 Docker (如果是Windows机器,那通过虚拟机(Hyper-V or Vmware)安装Linux就算是第0步吧)
  这是前置条件(需要1.8.3以上),关于Docker的安装,我就不详细说明了,我相信有兴趣体验Humbpack的,Docker安装肯定不在话下。


  • 部署 Humpback 管理站点
  既然是用的Docker,那毫无疑问,我们已经把Humpback-web打包成了一个镜像,只需要pull下来即可使用。在确认docker已经安装成功的前提下,执行如下命令,即可安装好 Humbpack 的管理站点。
# 创建一个目录,用来存储humpback-web的数据库文件  
mkdir -p /opt/app/humpback-web
  

  
# 完整粘贴即可,利用docker启动容器。其中如果要修改监听端口,就把8000改掉。
  
docker run -d --net=host --restart=always \
  
-e HUMPBACK_LISTEN_PORT=8000 \
  
-v /opt/app/humpback-web/dbFiles:/humpback-web/dbFiles \
  
--name humpback-web \
  
humpbacks/humpback-web:1.0.0
  启动成功之后,访问 http://localhost:8000 来确定是否部署成功。
  
如果要在宿主机访问,请使用虚拟机绑定的IP地址,另外,需要注意防火墙。
  
如果能够在浏览器中看到登录界面,那么就可以输入默认超级管理员账户:admin,密码:123456 进行登录。


  • 部署 Humpback-agent
  从项目名称就很容易看出,这货就是一个代理,为Humpback管理站点提供数据的。
  需要先在要被管理的机器上安装Docker环境(如果就在humpback这台虚拟机中试验,可以跳过,因为已经安装Docker),之后输入 docker version 查看一下版本号,我们主要关注其中的 API Version(待会要用)。
  老规矩,我们的 humpback-agent 也必然是一个镜像,那么执行如下方式安装下:
# 为了简单使用,先不考虑集群功能  
# 注意,之前我们在 docker version 中记录的 API Version 要排上用场了,
  
# 以下命令中有个环境变量 DOCKER_API_VERSION ,需要被设定为我们记录的API VERSION的值。
  
docker run -d -ti --net=host --restart=always \
  
-e DOCKER_API_VERSION=v1.21 \
  
-v /var/run/:/var/run/:rw \
  
--name=humpback-agent \
  
humpbacks/humpback-agent:1.0.0
  当启动成功之后,我们的 humpback-agent 也部署成功了。


  • 将机器(虚拟机)纳入Humpback管理
  打开我们第2步运行起来的Web管理平台,登录之后,创建一个Group:
  
DSC0000.png
  
并将部署了 humpback-agent 的机器IP,添加到Servers属性中,如图:
  
DSC0001.jpg
  
,然后进入我们的Group就能看到我们的机器和容器了。
  
DSC0002.jpg
  
至此,我们的Humback已经可用了,当然,这仅仅部署了一部分功能。如果需要私有仓库和集群,参考官方文档进行部署即可。

举个栗子
  光说不练,等于白干。现在,我们已经部署好 Humpback 了,那我们就来简单使用下。

场景一
  假设有如下场景,我们想要部署一个Redis来做缓存。
  官方提供的操作过程:
# 远程登录到服务器之后  
$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
  
$ tar xzf redis-3.2.8.tar.gz
  
$ cd redis-3.2.8
  
$ make
  其中可能会遇到的问题:


  • wget没装,手动安装wget。
  • make redis 出错,需要安装依赖项
  • 需要先登录到服务器
  • 等等
  但是如果用Humpback呢?


  • 打开Web管理界面的添加容器页面
  • 填写容器相关信息如下:
  • 点击确定,OK,妥了。
  在这样的场景下,两者的差距并不大。

  接着,我想临时停一下Redis:
  常规做法:


  • 登录到服务器(又要登录,烦不烦)
  • 找到这个服务(通过名称找,哎呀,命令记不住了)
  • 停止
  如果用Humpback呢?


  • 在容器管理界面,点击Stop,OK,妥了
  此时有 Humpback 就简单多了。

  再接着,发现一台redis不够了,又一台服务器,需要部署redis。
  常规做法:只能把之前的部署步骤再做一次。
  如果这台服务器也被Humpback管理中,那么用Humpback仅仅是创建一个容器的事情。

场景二
  在场景一中,我们是使用三方库,那这个场景呢,我们用来部署一个Web程序。
  常规部署过程:


  • 打包程序
  • 登录服务器,把程序拷贝到服务器上
  • 修改配置文件
  • 运行程序
  如果有多台,那么就要重复N次这样的步骤

  那如果是Humpback呢?


  • 构建镜像
  • 创建容器并运行
  如果有多台要部署,只需要批量创建容器即可,一次搞定

  第二天,发布了一个新版本
  常规部署过程:


  • 重新打包程序,拷贝到服务器上(还要担心覆盖出错)
  • 修改配置文件
  • 重新启动程序
  Humpback中:


  • 构建新版本镜像
  • 在容器管理中,点击升级,选择新版本即可。
  在这个过程,差异还不是太明显,不过明显humpback更快

  第三天,发现新版本程序,有个严重bug(没有bug的程序不是好程序)
  这下常规部署过程就折腾了,相当于重新发布一个历史版本,而且此时还不能保证和历史版本一致。
  但,如果是humpback,在容器管理界面,点击升级(实际可以升级/降级),然后选中历史版本,点击确定,就完完整整的还原到历史版本上去了。

总结
  总之,Humpback好用,有需要就赶紧体验下吧。暂时不需要,也可以体验下,吹牛也能多一些套路,而且,万一以后用得到呢。
  当然,此文提到的仅仅的基础用法,但我觉得,这足够了。要想体验更复杂的玩法,强烈建议参考官方文档。
  另附上几张操作图:
  创建容器界面:
  
DSC0003.jpg
  容器详细信息界面:
  
DSC0004.jpg
  容器版本升级界面
  
DSC0005.jpg
  容器监控界面
  
DSC0006.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-386635-1-1.html 上篇帖子: 2017年P4中国峰会北京站 会议小结 下篇帖子: 前端之HTML
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表