什么是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. EventBus通信小能手

     1.EventBus简介 EventBus 是由 greenrobot 组织开发的一个 Android 事件发布/订阅轻量级框架,特点:代码简洁,是一种发布订阅设计模式(观察者设计模式). Even ...

  2. 自动化利器-YUM仓库搭建实战

    本地YUM仓库搭建实战 YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的reposito ...

  3. Spring基础学习(五)—事务管理

    一.事务基本认识 1.事务的概述      为了保证数据库中数据的一致性,数据的操作应当是离散的成组的逻辑单元.当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应当全部视 ...

  4. Circular placeholder reference 'jdbc.driver' in property definitions

    Caused by: java.lang.IllegalArgumentException: Circular placeholder reference 'jdbc.driver' in prope ...

  5. less学习笔记(二)

    1.作用域:基本与javascrip的作用域相似,即先找局部变量,后找全局变量.找变量时遵循就近原则. 2.条件表达式:.mixin (@a) when (lightness(@a) >= 50 ...

  6. Ubuntu16.04安装NVIDIA驱动时的一些坑与解决方案

    这几天在新购置的笔记本上部署工作环境,在安装NVIDIA驱动的时候遇到了不少坑,重装了很多次,在Ubuntu论坛以及其他资料源看了很多大牛的分析,最终终于解决了一个又一个问题,过程比较艰辛,所以决定写 ...

  7. openssl命令行-证书认证

      命令1: openssl genrsa -out root.key 1024 产生一个root.key的私钥 命令2: openssl req -key root.key -new -out ro ...

  8. CF #335 div1 A. Sorting Railway Cars

    题目链接:http://codeforces.com/contest/605/problem/A 大意是对一个排列进行排序,每一次操作可以将一个数字从原来位置抽出放到开头或结尾,问最少需要操作多少次可 ...

  9. POJ 3261 出现至少K次的可重叠最长子串

    题意就是给一列数字,求最长的一个子串,并且满足子串在原数串中出现至少K次,子串可以重叠. 解法是将问题转为判定性问题,二分子串的长度,判定是否满足重复至少K次.判定方法是经典的根据子串长度将Heigh ...

  10. 为什么大多数培训机构还停留在只教ssh框架?

    最近听一些朋友说,招聘面试的很多人简历都差不多,大部分人的简历上面都写了熟悉ssh框架,我朋友就在吐槽,为什么这些人简历都差不多,并且都熟悉ssh框架? 后面他说, 可能这些人都是培训机构出来的, 然 ...