docker的web管理工具

海鸥

Docker Pulls
GoDoc
Gitter

简介

Seagull 友好的docker Web界面管理工具

  • 易于安装和卸载在Docker容器
  • 单击开始/停止/删除容器和镜像
  • 超快速(小于10ms)的搜索和过滤
  • 支持多主机管理和监控
  • 国际化主要包括英语、汉语、德语和法语

更多信息, 请到 dockerseagull.com, 观看 三分钟视频官方的幻灯片.

github地址

点击跳转: https://github.com/tobegit3hub/seagull

安装

  1. docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull

或运行 docker-compose up -d.

截图

多主机

Seagull支持监控多台服务器。确保你开始Docker守护这样。

  1. docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d

参与

Seagull is written in Go with tools like Docker, Beego, AngularJS, Bootstrap and JQuery.

  1. Install golang and setup $GOPATH
  2. go get github.com/astaxie/beego
  3. go get github.com/tobegit3hub/seagull
  4. go build seagull.go
  5. sudo ./seagull

More detail in seagull-design-and-implement and we have excellent documents in docs.

提醒

The issue #2 每个人都可以在IP和端口海鸥接触访问您的码头工人守护。为了安全,你可以绑定到本地主机的访问限制。

  1. docker run -d -p 127.0.0.1:10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull

类似的Docker项目

现在有很多类似的项目提供了Web界面来监控Docker。海鸥就是受他们影响并且期望做得比他们更好。

我想把这些项目都介绍给你们,任何人都可以根据他们所需要的进行选择。

Dockerui

这是它的Github主页,https://github.com/crosbymichael/dockerui.

你可以发现海鸥的UI是有点像Dockerui。因为我们都使用了Bootstrap和AngularJS作为前端框架。它是一个很好的项目并且在Github上有差不多2000个关注。

海鸥从Dockerui中学习了很多,包括使用JQuery.Gritter作为网站通知。但Dockerui的界面不够简洁,而且它没有考虑到国际化的需求,而我们考虑到了。我们愿意为全世界的开发者多做些事情。Dockerui还没有实现搜索功能而海鸥则很擅长这点。

Dockerui和海鸥是同类型产品,用于监控Docker。你没必要同时使用他们。而我们的目标就是用一个更友好、更实用的UI满足用户,并且取代Dockerui。

Zdocker

这是它的Github主页,https://github.com/love320/Zdocker.

Zdocker做了同类的事情来监控Docker镜像和容器。但它是使用Java实现的,而且没有提供Docker镜像,而且人们很难使用和学习。

这只能算是个人项目,我并不建议你去使用。因为目前为止我也不知道该怎样去运行它。

Shipyard

这是它的Github主页,https://github.com/shipyard/shipyard.

Shipyard设计来管理一个Docker集群。你必须输入服务器的SSH认证代码才能部署Shipyard引擎。然后你就可以通过命令行或者Web界面在你管理的服务器上部署容器了。

它和海鸥是非常不同的,因为海鸥仅仅是监控Docker而不会要求更多的权限。因此你可以使用Shipyard作为管理系统,同时使用海鸥来监控Docker。

CAdvisor

这是它的Github主页,https://github.com/google/cadvisor.

CAdvisor来自于Google,它主要是为了分析容器的资源。你可以使用它来监控你的容器占用CPU或者内存的历史情况。

然后,你不能用CAdivsor来管理你的镜像和容器。

Docker Registry Web

这是它的Github主页,https://github.com/atc-/docker-registry-web.

这是为Docker参与设计的Web界面。它的UI展示不错但你必须手动添加私有仓库地址。它用了Cookies来存储这个地址所以每次你运行时都要重新添加。

当我尝试去搜索Docker镜像时程序崩溃了。当我尝试去或者镜像详细信息的时候它显示“方法未授权”。

我希望他们可以在我们添加私有仓库时就默认添加Docker官方仓库。但我不太可能因为http://registry.hub.docker.com不支持CORS。

Docker Registry UI

这是它的Github主页,https://github.com/worksap-ate/docker-registry-ui.

这也是为Docker仓库设计的Web界面。它能用但是UI不是很好。

Docker Register Frontend

这是它的Github主页,https://github.com/kwk/docker-registry-frontend.

这几乎是跟Docker-registry-web和Docker-registry-ui是一样的东西。

php操作office文档

Javascript导出Excel表格

JavaScript导出Excel类

  1. var ExcelHelper = {};
  2. ExcelHelper.getBrowserName = function() {
  3. var ua = window.navigator.userAgent;
  4. //ie
  5. if (ua.indexOf("MSIE") >= 0) {
  6. return 'ie';
  7. }
  8. //firefox
  9. else if (ua.indexOf("Firefox") >= 0) {
  10. return 'Firefox';
  11. }
  12. //Chrome
  13. else if (ua.indexOf("Chrome") >= 0) {
  14. return 'Chrome';
  15. }
  16. //Opera
  17. else if (ua.indexOf("Opera") >= 0) {
  18. return 'Opera';
  19. }
  20. //Safari
  21. else if (ua.indexOf("Safari") >= 0) {
  22. return 'Safari';
  23. }
  24. }
  25. ExcelHelper.tableToExcel = (function() {
  26. var uri = 'data:application/vnd.ms-excel;base64,',
  27. template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
  28. base64 = function(s) {
  29. return window.btoa(unescape(encodeURIComponent(s)))
  30. },
  31. format = function(s, c) {
  32. return s.replace(/{(\w+)}/g,
  33. function(m, p) {
  34. return c[p];
  35. })
  36. }
  37. return function(table, name) {
  38. var ctx = {
  39. "worksheet": name || 'Worksheet',
  40. table: table.innerHTML
  41. }
  42. window.location.href = uri + base64(format(template, ctx))
  43. }
  44. })();
  45. ExcelHelper.CreateExcelByTable = function(table) {
  46. var bn = this.getBrowserName();
  47. if (bn == "ie") {
  48. var ax = new ActiveXObject("Excel.Application");
  49. var wb = ax.Workbooks.Add();
  50. var sheet = wb.Worksheets(1);
  51. var tr = document.body.createTextRange();
  52. tr.moveToElementText(table);
  53. tr.select();
  54. tr.execCommand("Copy");
  55. sheet.Paste();
  56. ax.Visible = true;
  57. var si = null;
  58. var cleanup = function() {
  59. if (si) {
  60. window.clearInterval(si);
  61. }
  62. }
  63. try {
  64. var fname = ax.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
  65. } catch (e) {
  66. print("Nested catch caught " + e);
  67. } finally {
  68. wb.SaveAs(fname);
  69. var savechanges = false;
  70. wb.Close(savechanges);
  71. ax.Quit();
  72. ax = null;
  73. si = window.setInterval(cleanup, 1);
  74. }
  75. } else {
  76. this.tableToExcel(table);
  77. }
  78. }

测试代码

  1. var table = document.getElementById('table_id');
  2. ExcelHelper.CreateExcelByTable(table);