NoPoint Kitematic 和 DockerCLI 如何无缝对接

mrexamo · 2015年08月12日 · 最后由 mrexamo 回复于 2015年08月13日 · 1012 次阅读

介绍

Kitematic是一个 Docker GUI 工具,它可以在 Mac 和Windows上更快速、更简单的运行Docker。Docker官方表示,Kitematic是其生态系统中成长起来的一个非常棒的项目。

Kitematic简化了安装本地Docker环境并提供一个GUI来pull、 build 和run容器。如果你还没有试过,你可以下载Kitematic 试用下。

Kitematic的主要目标是与DockerCLI彼此协作并且提供两者之间无缝对接体验。例如,一个用户可能运行下面的命令在Docker客户端启动一个容器:docker run hello-world ,并且在Kitematic观察结果,反之亦然。进一步说,我们的目标是与其他Docker工具一起开箱即用,如Docker Compose。

举个例子,如果我们通过命令行删除一个容器,Kitematic将立即反映这种变化:

应用程序架构:React 和Flux

Kitematic完全用JavaScript编写的。在考虑不同的架构设计和框架之后,我们最终的架构灵感来自Facebook的Flux。Kitematic的总体架构如下图所示:

Stores: 真实数据的来源并且需要逻辑来管理这些数据。

Components: 在React中执行,负责stores中数据的呈现和捕捉用户输入的数据。

Actions: Docker Remote API中通过组件或事件之间的交互产生的中间对象。Actions将被stores处理并导致应用数据的改变。

Utils: 这不是一个标准Flux实现的一部分,但是通过actions与外部服务进行交互。例如,Kitematic 有一个DockerUtil对象与Docker Engine Remote API进行交互。

当一个容器通过客户端被删除,将会发生以下情况:

Docker Engine产生destroy event 这个事件反过来触发一个容器destroyed action Subscribing to container actions,ContainerStore,负责存储容器数据,从它内部的容器列表更新删除破坏掉的容器数据。 UI组件负责列表容器,ContainerList组件相应的重新呈现。

The Code:Propagating Docker Engine Events to Kitematic GUI

让我们深入不同部分的代码库来了解一下是怎么实现的,下文我们做了简化。

1.从Docker Remote API Events触发操作

使用dockerode库,监听Docker Remote API很简单。在这种情况下,如果一个事件接收到状态遭到破坏,就会创建一个动作通知相关stores更新其内部数据:

2.更新Container Store

ContainerStore对象执行一个处理任何破坏掉的容器操作,更新其内部数据,通知所有监听组件重新呈现。

3.在ContainerList React Component触发更新

Kitematic中的高级Containers React组件监听ContainerStore发出的更新,在这种情况下,当ContainerStore发出更新,负责呈现容器的简单列表的ContainerList也随着更新的容器数据呈现。

ContainerList.react.js

总结

回顾一下,这篇文章解释了Kitematic 如何通过DockerCLI或任何集成Docker Engine.的工具,利用Docker Remote API、 React 和Flux 来实现实时更新。

此贴已暂时被屏蔽!

以下几种情况的帖子可能会被屏蔽:

  1. 标题/正文描述不清不楚;
  2. 无意义的发帖;
  3. 存在广告嫌疑;
  4. 招聘信息描述不清楚,未按照招聘节点的要求发帖,或职位信息不符合社区用户群需求;
  5. 新注册的帐号发布产品推广贴是不允许的哦,付出和回报是相等的,当然如果你的产品确实非常有意思,或是和 Ruby 有关的东西,是不会进入这个栏目的。
  6. 太过弱的提问会被直接转移到此节点,请在提问前多尝试,多搜索;
  7. 理论上,不允许发布 QQ 群、微信群之类讨论群。

如果你发现你的帖子被屏蔽,请自我检查反省,并修改帖子内容。


招聘贴被屏蔽原因

警告: 以后招聘贴不符合要求,直接屏蔽,管理员不再回复,如认真阅读,继续新发同样格式的贴,将会被禁用账号!

  • 排版请按 Ruby China 的 Markdown 格式要求,具体请认真阅读: 排版指导,并参考 这篇招聘 的排版;
  • 招聘内容过少,缺少公司介绍,产品介绍,职位介绍,或待遇,工作地,联系方式等必要信息;
  • 重复发帖(一家公司每月限制只能发一次招聘);
  • 专业不对口(个别不对口,但有特点的,我们会放过);

如果你有时间,请阅读 招聘栏目详细说明


学会如何合理提问,请阅读:https://ruby-china.org/topics/24325

当你修改好以后,可以回帖 @huacnlee@Rei@lgn21st 任何一人,我们将会审核,通过以后才可恢复到其他节点。

注!多次发现广告嫌疑的帐号,将会被禁用帐号。

共收到 4 条回复

新注册的帐号发布产品推广贴是不允许的哦

这不算产品推广吧 明明是纯技术分享范围的呀

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