Skip to content

Goyoo/docker-desktop

Repository files navigation

#基于浏览器的图形操作系统

##1、背景


这两年docker非常火爆,因为docker都是CLI终端操作,操作并不直观,使用docker需要具备一定的专业基础,
而很多软件开发者并不具备这样的专业基础。更不用说非开发人员接触容器了。

在公司里经常有人对我说“我的代码在我本地运行的好好的,放到公司私有云上就不成功”。
我在使用其它公司的云服务时有时也会有helloworld都运行不起来的情况,
对所有人来说调试容器真的是很困难的,容器里一般都不会有编辑器,无法进行微调,每次一点点修改就需要重新打包。
到目前为止没有什么好的办法可以直接操作容器。


我现在提供了一种很方便、直接、传统、没有任何学习成本的操作方式。
一款基于WEB的GUI,用户可以像操作电脑一样去操作这个容器。

##2、作品介绍

为容器提供基于WEB的GUI操作界面,UI使用windows10风格,用户可以像操作本地电脑一样操作容器。

用户可以上传文件到容器中,打开编辑预览文件。

只要有浏览器用户就可以拥有一台高配置的桌面操作系统,并在里面工作。

使用windows风格就算用户对linux不熟悉也可以很容易的使用

##3、实现方式

1、首先我使用 typescript语言 以及 angualr2框架 编写了一套UI组件 web desktop ,这套组件尽可能的模仿了windows10系统,完成了基本的操作。

2、然后使用swarm搭建跨区的集群

3、后端语言为nodejs,socket与前端建立一个web终端

4、我将这个终端隐藏起来让用户看不见,将用户在界面上的操作转换成命令交给终端去执行,再将命令返回的结果转换成html以图形展示出来

##4、实现功能

在首页中有创建机器的按钮,点击会弹出表单

 名称(name): 容器的名称,会通过 docker run参数 - - name 传入
 标签(label):这里的值将会通过docker run参数 - -label zone=<%=value%> 传入
 镜像(image):可以是任意镜像地址

创建成功后会列出所有容器。点击容器可以进入

进入后是一个windows10风格的界面,在里面有 我的电脑、我的文档、terminal、浏览器。

双击我的电脑会列出容器根目录下的所有文件夹以及文件

双击我的文档会列出容器root目录下的所有文件夹以及文件

用户可以拖拽本地文件到窗口实现上传

支持在线预览编辑的文件类型:

 inode/directory (文件夹类型 双击进入文件夹内)
 text/plain、inode/x-empty(文本类型,可打开编辑保存,保存的快捷键是 control + s)
 image/png、image/jpeg (图片类型 双击预览图片)
 application/zip (双击自动解压缩到当前目录,需要容器安装unzip工具)
 application/pdf (pdf文件 双击预览)

我的电脑和我的文档都可以点击右键来创建文件以及文件夹

文件类型可以右键删除、重命名以及复制粘贴

双击terminal会弹出终端管理窗口,在这里可以通过命令来操作当前容器

双击IE浏览器会弹出浏览器窗口,地址会指向当前当前容器的80端口,用户可以在容器内运行80端口的web程序在这里测试(在创建容器时默认暴露了80端口)

模仿windows风格将窗口拖拽到顶端会最大化,拖拽到左右两端实现分屏,再次拖拽窗口可以变回原来的大小

所有窗口可以最小化、最大化、以及关闭,最小化后的窗口可以在任务栏中找回。

鼠标移到任务栏会浮出小窗体(windows风格)

##5、如何使用

使用起来非常简单 首先将docker daemon 启动tcp方式,然后运行我已经制作好的镜像,将docker地址通过环境变量传给容器

docker run -d -p 8088:8088 --env DOCKER_HOST=192.168.100.100:8080 junjun16818/docker-desktop

##7、项目截图

github
github
github
github
github
github
github
github
github
github
github
github
github
github
github

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages