资讯专栏INFORMATION COLUMN

Kitematic和DockerCLI如何无缝对接

aaron / 2990人阅读

摘要:的主要目标是与彼此协作并且提供两者之间无缝对接体验。中通过组件或事件之间的交互产生的中间对象。将被处理并导致应用数据的改变。例如,有一个对象与进行交互。

介绍

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 来实现实时更新。记得现在就下载Kitematic试用并反馈给我们。(本文编译自Docker博客)

时速云 轻量级容器云平台

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26456.html

相关文章

  • 关于微软容器战略,你需要知道的十件事

    摘要:自从微软和宣布合作以来,微软一直在容器上面的战略可谓稳扎稳打。最近,微软加入,并作为创始成员承诺支持常见容器的格式和运行。这种定位导致大家对于微软容器战略的认识模糊。微软的容器策略并不是可移植性说的直白一点。 自从微软和Docker宣布合作以来,微软Redmond一直在容器上面的战略可谓稳扎稳打。最近,微软加入Open Container Initiative (OCI),并作为创始成...

    Kerr1Gan 评论0 收藏0
  • Docker 源码走读 - 在运行 Docker run 时发生了什么?

    摘要:源码走读在运行时发生了什么标签空格分隔原文作者是,原文地址是在这篇博文中我将回答一下问题运行一个期间内部发生了什么开始首先从并检查代码。这个发生在和行之间。如果一个错误发生,它会被记录,然后程序退出。这些覆盖了在客户端里面发生了什么。 Docker 源码走读 - 在运行 Docker run 时发生了什么? 标签(空格分隔): Docker 原文作者是 Frank Scho...

    赵连江 评论0 收藏0
  • Twitter 开源增强学习框架Torch-twrl ,可与OpenAI 无缝对接

    摘要:棋类游戏和电子游戏通常都会有定义明确的回馈函数,这使得用增强学习算法来直接进行优化成为可能。增强学习算法或智能体的目标是通过与任务或者环境进行互动,学会执行复杂的新颖的任务。使得增强学习算法和环境的开放与测试变得更加简便了。 机器学习的进步由多个领域的创新和创意驱动。从人类学习事物的方式获得启发,增强学习(RL)指的是系列算法,能够通过试错的回馈来进行提升,可以进一步优化未来的表现。 棋类游...

    lijy91 评论0 收藏0
  • 混合云存储,备份、归档、容灾一个也不能少

    摘要:采用混合云存储,灾难恢复能够达到秒级还是分钟级关键还要看带宽。经测试,采用混合云进行分级存储,在非实时高可用场景下,存储成本可降低在使用归档存储的情况下,成本仅为独立建设灾备集群的成本的五分之一。人人都说,混合云/多云是未来。IDC曾预测,2018年,85%以上的大型企业都将采用混合云。RightScale发布的2018年云计算调查报告也显示出同样的趋势,81%的企业都有一个多云策略,其中又...

    zoomdong 评论0 收藏0
  • 阿里云正式推出消息队列Kafka:全面融合开源生态

    摘要:在全面兼容Apache Kafka生态的基础上,消息队列Kafka彻底解决ApacheKafka稳定性不足的长期痛点,并且支持消息无缝迁移到云上。 近日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态。在全面兼容Apache Kafka生态的基础上,消息队列Kafka还具备了超易用,超高可用可靠性,扩缩容不操心,全方位安全诊断,数据安全有保障的特点。可用行达99.9%,数据可靠行99...

    aisuhua 评论0 收藏0

发表评论

0条评论

aaron

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<