什么是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. Mycat安装与使用

      1.下载:   https://github.com/MyCATApache/Mycat-download 具体下载哪个版本以发布为准,推荐1.4,1.5.   2.安装:   安全前,在Linu ...

  2. Docker系列一之基础快速入门企业实战

    1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...

  3. 【转】HTML5 本地存储五种方案

    1.LocalStorage LocalStorage就是Key-Value的简单键值对存储结构,Web Storage除了localStorage的持久性存储外,还 有针对本次回话的sessionS ...

  4. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 5

    看这段代码之前还是请回到“图13-6-1 NotesList控件列表”中重温一下一个控件的每个属性名和值是怎么组织起来的: android.widget.FrameLayout@41901ab0 dr ...

  5. 老李推荐:第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览

    老李推荐:第5章2节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动流程概览   每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就 ...

  6. 手机自动化测试:appium源码分析之bootstrap九

    手机自动化测试:appium源码分析之bootstrap九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...

  7. AndroidAnnotations框架简单使用方法

    当我们配置好了框架后,那么久可以来使用了.使用教程网上一大堆,官方也有提供!!!可自行学习深造.下面我简单的贴出几个常用的方法,作为HelloWorld入门: @EActivity(R.layout. ...

  8. MongoDB基础教程系列--第八篇 MongoDB 副本集实现复制功能

    为什么用复制 为什么要使用复制呢?如果我们的数据库只存在于一台服务器,若这台服务器宕机了,那对于我们数据将会是灾难,当然这只是其中一个原因,若数据量非常大,读写操作势必会影响数据库的性能,这时候复制就 ...

  9. mysqldumpslow的使用简介

    mysqldumpslow的使用:比如我们要查询按时间返回前5条日志信息,格式如下:mysqldumpslow -s t -t 5 /var/log/mysql/slowquery_20170303. ...

  10. 使用vs2015搭建Asp.net Core

    准备工具    1.首先得安装vs2015 并且升级至 update3及以上  2.安装.net core sdk.附上官网下载地址 http://www.microsoft.com/net/down ...