Skip to content

Instantly share code, notes, and snippets.

@haosdent
Created October 21, 2016 16:20
Show Gist options
  • Save haosdent/986ef7a9a6e102fe84e80e36faff2138 to your computer and use it in GitHub Desktop.
Save haosdent/986ef7a9a6e102fe84e80e36faff2138 to your computer and use it in GitHub Desktop.
Crane代码学习

最近欠债比较多,很不好意思一直想写Crane的学习感受拖到现在才写。Crane是数人云最近开源的Docker管理面板,一开始出来的时候通过Github上的Demo连接试用学习了下,感觉平易近人,毫无学习成本,一贯的数人云产品风格,完全是一款从用户角度出发,解决用户痛点的好产品!而且这么好的产品竟然还以Apache 2.0 License开源,任何人都可以从Github clone源代码构建使用,简直是我们这群屌丝用户的福音。于是我迅速打开了终端,悄悄Clone了代码,不然哪天数人云把它闭源了,我就再也用不了这么好的产品了。Mesos/Marathon/K8S 请一边去,不认识你们。

git clone https://github.com/Dataman-Cloud/crane.git

怀着激动地心情clone了代码之后,我觉得我需要好好反省下自己,学习下数人云的大神们无私奉献的开源精神,所以我又悄悄地打开了编辑器,按耐着心中的喜悦从src 这个目录开始学习起Crane的代码,乍看之下,Crane代码结构明了,逻辑清晰。按照models, plugin, api等进行模块划分,让我们这种小白可以非常容易对 Crane的实现建立起大概的印象。而且其中测试用例完善,覆盖大部分代码。让人对Crane这个产品的质量有了充足的信心。

Crane中src的代码主要封装了对Docker SwarmKit的调用,并以API的形式提供给前端调用,当然后端还除了包括验证,配置管理。其中像WebSSH, FuzzySearch 等功能则以插件的形式放在了plugins的目录下,显然Crane以后会有更多的插件以方便用户的不同使用场景。

Crane的前端是用AngularJS 1.x 实现,放在frontend目录里面。里面的结构层次也是非常清晰,看上去和src下面的后端代码互相呼应,难怪Crane的界面如此 酷炫。而且绝大部分前端代码已经国际化(i18n),目前支持使用英文或者中文。可以看到不远的将来必然有更多来自不同地区不同国家小伙伴来使用和感受Crane带来的 方便。

除了代码以外,Crane的文档也非常详细,里面详细介绍了Crane的主要功能和安装使用,非常 方便用户自行部署安装。

不过在读代码的过程中,我发现了混用Tab和Space的异端,欢迎大家提Merge Requests把这些混用Tab和Space的地方解决掉 :)

$ egrep -lnr '\t ' . |wc -l
83

很感谢数人云把Crane这款如此优秀易用的容器管理工具开源,让大家都能体会到容器带来的便利,希望Crane越来越完善,帮助到越来越多使用容器的企业。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment