什么是Humpback?

项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~

在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker)。

Docker-百度百科 中,对 Docker 已经解释得很清楚了。

简单来说,Docker可以帮助我们以容器的方式快速运行APP。

由于一个镜像就是一个完整的 APP,只要我们构建好镜像,我们就可以快速,一致的在多个地方运行同样的 APP。这虽然解决了 APP 一致性的这个问题,但是,我们在部署的时候,依然要远程到服务器上,拖镜像,通过一长串命令(端口映射,磁盘映射,环境变量等的配置)来启动Docker容器。

这是一个重复而容易出错的过程,Humpback 就是为了解决该问题而生(当然,我们已经扩展了更多的功能:如集群管理,镜像构建,私有仓库管理等)。

那现在来回答什么是 HumpbackHumpback 是一个简单易用的轻量级容器管理平台,一个私有仓库管理平台,一个容器调度平台。

那它能做什么呢?

  1. Web界面 的方式,来进行容器的创建/运行以及管理(启动,停止,重启,监控,应用版本升级/回退)。 ★★★★★
  2. 镜像构建,将镜像所需文件和Dockfile打包为 .tar.gz 文件,就可以打包为一个镜像 ★★
  3. 管理私有仓库,将自己部署好的私有仓库,纳入到humpback的管理中。 ★★★★
  4. 集群容器调度,当我们部署一个app时,只需要告诉humpback,我要部署多少个实例,humpback会自动根据配置进行集群部署,并通过WebHook通知部署结果。 ★★★
  5. 对容器管理进行权限设定。 ★★

注:星级表示功能的常用程度,五星为最常用的功能。

差点忘了贴官方文档和Github地址,罪过!

Humpback官方文档

Github 开源汇总地址

Github Humpback 组织

部署Humbpack

说了这个多,有没有想尝试下使用 Humbpack 进行容器管理?易用,不仅体现在真正的使用上,还需要能够简单部署。

接着,我们就看一下应该如何部署 Humpback

  1. 安装 Docker (如果是Windows机器,那通过虚拟机(Hyper-V or Vmware)安装Linux就算是第0步吧)

这是前置条件(需要1.8.3以上),关于Docker的安装,我就不详细说明了,我相信有兴趣体验Humbpack的,Docker安装肯定不在话下。

  1. 部署 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 进行登录。

  1. 部署 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 也部署成功了。

  1. 将机器(虚拟机)纳入Humpback管理

打开我们第2步运行起来的Web管理平台,登录之后,创建一个Group:



并将部署了 humpback-agent 的机器IP,添加到Servers属性中,如图:



,然后进入我们的Group就能看到我们的机器和容器了。



至此,我们的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

其中可能会遇到的问题:

  1. wget没装,手动安装wget。
  2. make redis 出错,需要安装依赖项
  3. 需要先登录到服务器
  4. 等等

但是如果用Humpback呢?

  1. 打开Web管理界面的添加容器页面
  2. 填写容器相关信息如下:
  3. 点击确定,OK,妥了。

在这样的场景下,两者的差距并不大。

接着,我想临时停一下Redis:

常规做法:

  1. 登录到服务器(又要登录,烦不烦)
  2. 找到这个服务(通过名称找,哎呀,命令记不住了)
  3. 停止

如果用Humpback呢?

  1. 在容器管理界面,点击Stop,OK,妥了

此时有 Humpback 就简单多了。

再接着,发现一台redis不够了,又一台服务器,需要部署redis。

常规做法:只能把之前的部署步骤再做一次。

如果这台服务器也被Humpback管理中,那么用Humpback仅仅是创建一个容器的事情。

场景二

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

常规部署过程:

  1. 打包程序
  2. 登录服务器,把程序拷贝到服务器上
  3. 修改配置文件
  4. 运行程序

如果有多台,那么就要重复N次这样的步骤

那如果是Humpback呢?

  1. 构建镜像
  2. 创建容器并运行

如果有多台要部署,只需要批量创建容器即可,一次搞定

第二天,发布了一个新版本

常规部署过程:

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

Humpback中:

  1. 构建新版本镜像
  2. 在容器管理中,点击升级,选择新版本即可。

在这个过程,差异还不是太明显,不过明显humpback更快

第三天,发现新版本程序,有个严重bug(没有bug的程序不是好程序)

这下常规部署过程就折腾了,相当于重新发布一个历史版本,而且此时还不能保证和历史版本一致。

但,如果是humpback,在容器管理界面,点击升级(实际可以升级/降级),然后选中历史版本,点击确定,就完完整整的还原到历史版本上去了。

总结

总之,Humpback好用,有需要就赶紧体验下吧。暂时不需要,也可以体验下,吹牛也能多一些套路,而且,万一以后用得到呢。

当然,此文提到的仅仅的基础用法,但我觉得,这足够了。要想体验更复杂的玩法,强烈建议参考官方文档。

另附上几张操作图:

创建容器界面:

容器详细信息界面:

容器版本升级界面

容器监控界面

一个简单易用的容器管理平台-Humpback的更多相关文章

  1. Docker容器管理平台Humpback进阶-私有仓库

    Docker私有仓库 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢? 它实际上是从 registry.hub.doc ...

  2. [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?

    两大容器管理平台,Kubernetes与OpenShift有什么区别? https://www.sohu.com/a/327413642_100159565 原来openshift 就是 k8s的一个 ...

  3. 企业级容器管理平台 Rancher 介绍入门及如何备份数据

    企业级容器管理平台 Rancher 介绍入门及如何备份数据 是什么 Rancher 是一个为 DevOps 团队提供的完整的 Kubernetes 与容器管理解决方案的开源的企业级容器管理平台.它解决 ...

  4. 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流

    背景 云开发CloudBase CMS 是云开发推出的一站式云端内容管理系统,助力企业的数据运营管理工作. 开发者可以直接在云开发扩展能力中一键安装 CloudBase CMS,免费使用 CloudB ...

  5. Docker容器管理平台Rancher高可用部署——看这篇就够了

    记得刚接触Rancher时,看了官方文档云里雾里,跟着官网文档部署了高可用Rancher,发现不管怎么折腾都无法部署成功(相信已尝试的朋友也有类似的感觉),今天腾出空来写个总结,给看到的朋友留个参考( ...

  6. [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS

    [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且 ...

  7. 基于kubernetes自研容器管理平台的技术实践

    一.容器云的背景 伴随着微服务的架构的普及,结合开源的Dubbo和Spring Cloud等微服务框架,宜信内部很多业务线逐渐了从原来的单体架构逐渐转移到微服务架构.应用从有状态到无状态,具体来说将业 ...

  8. 分享一个简单易用的软件定时器模块(MultiTimer)——基于keil+stm32f103zet+hal库(裸机实现)

    公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer 今天看了看,简单的,就移植了- 且看文档的说明, ============== ...

  9. SaltStack 是一个服务器基础架构集中化管理平台

    SaltStack详细部署   一.基础介绍============================================================================== ...

随机推荐

  1. ELK整体方案

    # ELK日志搜集平台解决方案---------1. 硬件设备2. 系统环境3. elasticsearch 集群部署4. kibana 部署5. logstash 部署6. filebeat 部署7 ...

  2. PRINCE2的国际形势?光环国际项目管理培训

    PRINCE2的使用和应用非常广泛.在过去的12个月里,超过60,000人参加了PRINCE2基础资格(Foundation)或从业资格(Practitioner)考试.现在每周参加考试的人数超过了2 ...

  3. eclipse中配置drools6.5环境

    1.去官网下载两个压缩包 2.解压两个压缩包,依次进入droolsjbpm-tools-distribution-6.5.0.Final\droolsjbpm-tools-distribution-6 ...

  4. jQuery基础学习(三)—jQuery中的DOM操作

    一.查找节点      查找属性节点: 通过jQuery的选择器来完成.      操作属性节点: 调用jQuery对象的attr()来获取它的属性值.      操作文本节点: 通过text()方法 ...

  5. 职责链模式(Chain of Responsibility)的Java实现

    职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它 ...

  6. ArcGIS API for JavaScript 4.2学习笔记[30] 点和线高程查询(第八章完结)

    终于到最后一篇了,可喜可贺. 本例先说明了如何进行单点的高程差分析,然后说明了道路的起伏分析.前者很直观地比较了两个年份的高程数据之间的差值,体现山区的高程变化(有啥用啊?)后者,一条路上的起点终点起 ...

  7. Android ShellUtils

    Android中执行Shell命令的工具类 public class ShellUtils { public static final String COMMAND_SU = "su&quo ...

  8. 文件系统与linux相关知识点

    文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能.对于服务器开发人员,比较关注的是unix(linux)环境下的文件系统,比如分区与磁盘关系,磁盘的剩余空间,文件的类型与权限控制,文 ...

  9. CSS也需要重构

    最初接触到的CSS面向对象,是项目里的CSS超过8千行,缺乏约束和管理,在近期或不远的将来,有迫切的要求需要重构.CSS面向对象和模块化. CSS代码遇到的问题: 重用性差,看着一个CSS的名称,很难 ...

  10. tomcat的常用配置

    1.解決get请求的中文乱码问题 解决办法: 首先找到tomcat路径下的apache-tomcat-7.0.52\conf文件夹,打开server.xml文件,编辑如下内容: <Connect ...