Appetizer 基于 Docker 的工具 / 服务即插即用

AppetizerIO · 2018年09月06日 · 最后由 AppetizerIO 回复于 2018年09月07日 · 4658 次阅读

废话不多说,先上动图,假设要在开发机上启动 mitmproxy 这个代理工具

Appetizer 1.3.14 新功能,工具即插即用,一键起停,首发支持 Jenkins, Influxdb, Gitlab, Grafana, ATXServer, mitmproxy, Hitchhiker, STF,持续开放增加中。。。

解决了什么问题

每当要用个新工具,前几个小时花在

python 2.7不行,要3.6
jdk 6不行要8
sudo pip install 等啊等,SSL一会又出错了
go build 等
npm install 还是cnpm install
...

这些从源代码开搞的安装成年旧事早就应该淘汰了,处处用 sudo,处处全局安装,离系统重装不远。Docker 早就来解决这些问题了,工具自己需要 Python/JDK/Node/Go 的版本自己声明,build 过程写入 Dockerfile,build 成镜像,安装工具是直接抓取镜像直接跑就好。是时候想到装工具首选用 Docker,于是我们 Appetizer 就把这一溜常用的工具的 docker 安装全都撸了一遍,写成了统一的部署脚本,然后就,一键安装起停咯。当然是支持三平台的,只要装好 Docker,其他事情交给我们(Windows, mac 有 Docker Desktop 全家福, linux 直接包管理装)。Use case:

  • 我听说一个新工具,想试用看看
    • 用 Appetizer 一键就好
  • 我要用 XXX 抓包/存数据/可视化数据/xxx
    • 用 Appetizer 一键就好,用完关闭,不担心 daemon 常驻耗内存
  • 我要在服务器上装这些工具,全网用
    • 服务器上装好 Docker 运行 Appetizer 一键即可,没差别
  • 我有个本地的工具想迁移到服务器上
    • Appetizer 创建工具的容器时,工具运行时产生的数据是 mount 到存储卷的(比如 log, 数据等),具体用到哪些存储卷可以通过每个工具的详细信息了解。在服务器上用 Appetizer 同样安装这个工具,然后把存储卷数据从本地 rsync 到服务器对应的存储卷即可
  • 我是 docker 高级玩家
    • docker compose 配置在,随便玩,透明的
  • 我是 k8s 高级玩家,我手下有 xxx 个容器,xxx 个负载均衡实例,xxx 个 dashboard
    • 那你自己玩

原理

原理很简单,Docker 装好之后,有非常完整的 API:https://docs.docker.com/engine/api/v1.37/#operation/ImageList
docker 命令行工具其实是 API 的封装,而 Appetizer 是直接调用 API 管理 Docker 的。

在管理每个具体工具的时候,我们撸了一遍每个工具的 docker 安装文档,绝大多数都是建议用 docker run xxx 命令行工具来部署的。我们统一采用的 docker compose 配置文件格式。科普一下 docker compose 是一个(官方)工具,读取 yml 格式的配置文件,可以自动管理一个工具需要的多个 docker 容器(比如工具依赖 mysql 容器等等)。用 compose 格式的另一个好处是可以全面地管理工具运行中产生的数据(存储卷)。Appetizer 可以读取标准的 docker compose yml 配置文件并执行它,兼容官方的 docker-compose 工具。每个 Appetizer 支持的工具的详细信息里都有会抓取的镜像,容器名字,端口映射以及存储卷(volume) 例如:

  • Appetizer 的每个工具的 docker compose yml 配置,可以单独拿出来,用官方的 docker-compose 来用

开放协作

所有的目前的(以及未来的)工具的 metadata 和 compose 配置都在这里:https://github.com/appetizerio/OpenServices 欢迎 PR 增加新工具/服务

  • 我想用一个新工具,有 Docker 安装方式,Appetizer 没有收录
    • 点击 “贡献新的服务”,填写 metadata (工具名称,logo,官网等等信息),重要的是写好它的 compose 文件(需要 docker 知识),提交后我们马上会处理、测试,最快下次发版
  • 我想用一个新工具,没有 Docker 安装方式
    • 可以先提交 metadata,docker 处留空,积极推进 Docker 化
  • 我做了一个新工具,希望 Appetizer 收录
    • 首先,学习 docker 并 docker 化你的工具,然后 “贡献新的服务”
  • 为什么没有 Appium?Appium 不是也有 Docker 部署么?
    • Appium 比较特别,需要访问 USB 设备,在 linux 下就是要访问 /dev/usb 是个特权操作,所以 Appium 在 Linux 上用 Docker 部署需要创建特权容器;Appium 在非 Linux 上 Docker 安装,也是因为这个特权原因,需要搞一个docker machine,相当于一个虚拟机,暂时不在目前 Appetizer 支持的框架内
  • 为什么 STF 还不支持 Docker 部署?
    • STF 的情况和 Appium 类似,而且 STF 的 Docker 部署非常混乱,努力中

AppetizerIO QQ 群:467889502

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

很赞的构思~

不过工具傻瓜一键安装,我只信 bitnami

槽神 回复

VM 早就过时,体积大,启动慢,内存耗费大,数据抠不出来

Rancher 了解下

arrow 回复

能有专人管理的完整的 rancher/k8s 那当然好啦

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册