@lsmn
2018-06-14T07:12:33.000000Z
字数 1793
阅读 1784
容器
Docker
Dockly是Docker CLI的开源替代方案,它可以帮助你从命令行管理和监控所有的Docker容器。为了更好地了解Dockly如何改进了与Docker的协同,InfoQ采访了Dockly开发者Liran Tal,了解他构建Dockly及创建终端应用程序的经验。
Liran Tal发现Docker CLI很不方便,于是就构建了一个开源替代方案Dockly。它可以帮助你从命令行管理和监控所有的Docker容器。为了更好地了解Dockly如何改进了与Docker的协同,InfoQ采访了Dockly开发者Liran Tal,了解他构建Dockly及创建终端应用程序的经验。
一个典型的Docker CLI工作流需要你列出系统上的容器,指出你希望使用的容器的名称或ID,然后发出一个后续命令启动容器。使用Dockly就不需要列出系统上当前存在的所有容器。它让你可以从一个窗口中启动、停止、删除和查看那些容器。
Dockly是一个使用Node.js编写的开源软件,用户可以通过NPM安装,并在Linux、iOS和Windows上运行。
InfoQ:是什么促使你创建了Dockly?
Liran Tal:几年前,当我开始加大容器的使用力度时,我发现,即使我喜欢使用终端,使用Docker CLI工具也让我觉得繁琐。由于名字长或终端窗口小,列出的容器无法很好地显示。要在特定的容器或镜像上运行命令需要首先查询容器的名称或ID,然后发出另一条命令,诸如此类。
那时,我意识到,我需要一种更好的方法来和容器交互,但是,不需要把上下文如多任务切换到浏览器来使用Web UI。
InfoQ:在创建Dockly时您遇到了什么挑战?
Tal:不同的部件和信息的布局及它们在屏幕上的位置和实际情况非常有挑战性,我重排了许多次。
另外一项挑战是和不同Node.js引擎的兼容性。由于Dockly可能被Ops团队采用,他们会依赖OS提供的渠道进行包管理,那么当他们试图在Node.js 4上运行Dockly时就会碰壁。你需要能够运行它的最新版本Node.js,如版本8 LTS。
InfoQ:您接下来希望添加什么特性?
Tal:我一直在想,容器列表的预输入、交互式自动补全会非常有用,因为对于一个长列表或容器名,你可能需要滚动查看才能找到想要的容器。
另外,值得一提的是,Matan Avneri近日向这个项目贡献了一些很棒的增强,如可以查看服务,如果你工作在一个Docker Swarm集群环境中,那真得非常有用。
InfoQ:这个工具目前还有什么局限性或不足?
Tal:对于一些高级的场景,进一步强化Swarm集群管理或者是服务当前状态的可见性会很有趣。可以非常容易地了解服务的健康状况和状态会非常有用。
从特性的角度来说,这未必就是局限,但那确实总是让我感到不快,就是目前没有测试套件。虽然单元测试和集成测试很容易实现,但整个屏幕的交互流比较复杂。考虑一下,如果没有终端交互,端到端测试(E2E)会怎样。我相信,这本身就是一个绝妙的想法,可以作为一个全新的开源项目。
InfoQ:如果有人想要为Dockly做贡献,那么从哪里开始比较好?
Tal:我们有几个不错的问题打开着,不过,我已经看过并合并了用户就完全不同的主题所做的贡献,如增加更多的命令,在用户界面内控制容器,或者重构部分代码库,更好地重用代码组件和遍及终端UI的小部件。
InfoQ:您近日在JSHeroes谈了终端开发,对于那些希望自己创建控制台工具的,您有什么建议?
Tal:对于任何构建命令行工具的人,我的主要建议是要特别注意开发者体验,针对生产力和友好性进行优化。人们很容易忘记,并不是所有的终端用户都足够先进。另一方面,如果你将一个命令行工具视为一款产品,那么你就必须考虑良好的默认值、优秀的用户体验,而用户会评价你的App的有效性。
其中有些概念和Web开发非常类似。例如,如果工具正忙于处理,就会以旋转指针或进度条的形式向用户说明。或者,如果发生了异常,就会向用户发送一条简单易懂且合理的消息。
要了解有关Dockly的更多信息,请查看该项目的GitHub库。
查看英文原文:Q&A with the Creator of Dockly, a Console-Based UI for Managing Docker Containers