Kitematic和DockerCLI如何无缝对接

Mrexamo · · 3348 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

### 介绍 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将立即反映这种变化: ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/kubernetes1.gif) ### 应用程序架构:React 和Flux Kitematic完全用JavaScript编写的。在考虑不同的架构设计和框架之后,我们最终的架构灵感来自Facebook的Flux。Kitematic的总体架构如下图所示: ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/kubernetes2.png) **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更新其内部数据: ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/kubernetes3.png) ### 2.更新Container Store ContainerStore对象执行一个处理任何破坏掉的容器操作,更新其内部数据,通知所有监听组件重新呈现。 ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/kubernetes4.png) ### 3.在ContainerList React Component触发更新 Kitematic中的高级Containers React组件监听ContainerStore发出的更新,在这种情况下,当ContainerStore发出更新,负责呈现容器的简单列表的ContainerList也随着更新的容器数据呈现。 ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/kubernetes5.png) ContainerList.react.js ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/kubernetes6.png) ### 总结 回顾一下,这篇文章解释了Kitematic 如何通过DockerCLI或任何集成Docker Engine.的工具,利用Docker Remote API、 React 和Flux 来实现实时更新。记得现在就下载Kitematic试用并反馈给我们。(本文编译自Docker博客) ### 时速云 轻量级容器云平台

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3348 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传