一种Web访问Docker容器的方法及系统
技术领域
本发明涉及云计算技术领域,具体地说是一种Web访问Docker容器的方法及系统。
背景技术
Docker(Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源)是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。它可以类比于虚拟机,但本身并不是虚拟机。
远程访问容器功能的传统实现方式是基于虚拟机的思想,在每个容器中启动一个sshd进程。由于容器PID为1的进程的特殊性,为了保证容器不停,容器的Entrypoint需要设置为类似于Supervisord这样的进程管理程序。用户通过SSH的客户端软件指定容器的IP远程连接到容器,这种传统方式需要修改容器的启动参数,在容器内运行sshd进程,给容器配置用户名、密码并设置可外部访问的IP地址。过程十分繁琐,并占用Docker宿主机资源,且客户端访问方式不如Web访问方式简便灵活。
随着技术的不断发展,技术人员研究出了基于Web端SSH登录方式,这种方式代替了传统使用客户端软件实现SSH的远程登录,具有便于实现和用户操作的优点,但基于Web端SSH登录方式还具有如下缺点:1、用户可远程访问的主机受到前期Service配置的限制,无法随意地远程登录任意主机,灵活性差;2、仅支持远程主机的登录,不支持直接登录Docker容器,因此,针对此问题,如专利201610169619.4,名称为“一种Web端登录Docker容器的方法和装置”,本发明采用的技术方案为:方法包括:接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;解析所述URL请求得到所述主机地址和所述容器ID;根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令;本发明是通过在远程主机中创建独立的SSH服务,根据SSH远程登录命令解析获取容器ID,进而动态生成Docker容器登录命令,直接实现登录指定Docker容器;但是还存在如下问题:虽能够通过Web直接登录Docker容器,但是仍然需要创建SSH服务、启动SSH进程并执行SSH远程登录命令,通过解析SSH远程登录命令得到容器ID生成并执行携带有容器ID的Docker容器登录命令,并且还需设置用户名参数,预先配置密码验证回调函数为不需验证密码,以便实现无密码登录,实现方式较繁琐,不利于降低配置难度,节省资源。
发明内容
本发明的技术任务是提供一种Web访问Docker容器的方法及系统,来解决现有技术中Web远程访问Docker容器仍需创建单独的SSH服务进行远程登录访问,需配置用户名、密码等参数,远程访问过程相对繁琐,占用Docker宿主机资源的问题。
本发明的技术任务是按以下方式实现的,
一种Web访问Docker容器的方法,使用访问支持组件和Web访问组件,分别负责对Docker容器访问提供支持功能和Web访问连接的建立和访问功能;所述方法包括以下步骤:
(1)、用户通过在Web页面找到要访问的Docker容器并发起访问请求;
(2)、通过访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,并将令牌返回给用户;
(3)、通过访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
(4)、通过Web访问组件验证令牌,若令牌未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
(5)、Websocket连接建立后,通过Web访问组件打开Docker容器的含有控制台终端的Web页面。
步骤(6)中,通过Web访问组件监听Websocket连接,Web访问组件使用三个线程分别处理标准输入信息、标准输出信息和标准错误输出信息。
处理标准输出信息的线程将经Websocket连接返回到Web页面标准输出信息发送到Web页面的标准输出文件内;处理标准错误输出信息的线程将经Websocket连接返回到Web页面标准错误输出信息发送到Web页面的标准错误输出文件内。
处理标准输入信息的线程将从Web页面上输入的标准输入信息通过Websocket连接发送给控制台终端的标准输入文件中。
步骤(2)中,创建Docker容器访问的令牌时,设置令牌失效时间;步骤(4)中,验证令牌,令牌错误或失效为未通过验证。
一种Web访问Docker容器的系统,包括:
①访问请求单元,用于通过在Web页面找到要访问的Docker容器并发起访问请求;
②访问支持组件,负责对Docker容器访问提供支持功能;
访问支持组件包括建立及判断单元和获取单元,
建立及判断单元,用于访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,并将令牌返回给用户;
获取单元,用于访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
③Web访问组件,负责对Docker容器访问提供Web访问连接的建立和访问功能;
Web访问组件包括验证令牌单元和Websocket连接单元,
验证令牌单元,用于验证令牌,若令牌未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
Websocket连接单元,用于建立Websocket连接,打开Docker容器的含有控制台终端的Web页面。
Web访问组件还包括监听单元,监听单元用于监听Websocket连接,并使用三个线程分别处理标准输入信息、标准输出信息和标准错误输出信息。
处理标准输出信息的线程,用于将经Websocket连接返回到Web页面标准输出信息发送到Web页面的标准输出文件内;
处理标准错误输出信息的线程,用于将经Websocket连接返回到Web页面标准错误输出信息发送到Web页面的标准错误输出文件内。
处理标准输入信息的线程,用于将从Web页面上输入的标准输入信息通过Websocket连接发送给控制台终端的标准输入文件中。
访问支持组件的建立及判断单元创建Docker容器访问的令牌设置有令牌失效时间;
Web访问组件的验证令牌单元,设置令牌错误或失效为未通过验证。
本发明的一种Web访问Docker容器的方法及系统较现有技术具有以下优点:
1、本发明提供的一种Web访问Docker容器的方法及系统,无需对Docker容器进行任何的改造,即可远程访问Docker容器。不需要启动sshd进程,也不需建立独立的SSH服务,也不需要配置Docker容器外部访问IP地址,基于Websocket连接即可实现;
2、不需要在Docker容器里配置登录用户名和密码信息,仍然实现了对Docker容器接入的权限控制;
3、本发明采用Web的访问方式较客户端的访问方式更加方便灵活;
4、本发明提供的一种Web访问Docker容器的方法及系统,具有使用简便、可靠且能够降低配置难度、节省资源等特点,具有很好的推广使用价值。
附图说明
下面结合附图对本发明进一步说明。
附图1为一种Web访问Docker容器的方法及系统的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种Web访问Docker容器的方法作以下详细地说明。
实施例1:
本发明的一种Web访问Docker容器的方法,使用访问支持组件和Web访问组件,分别负责对Docker容器访问提供支持功能和Web访问连接的建立和访问功能;所述方法包括以下步骤:
(1)、用户通过在Web页面找到要访问的Docker容器并发起访问请求;
(2)、通过访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌(Token,代表执行某些操作的权利的对象),并将令牌返回给用户;
(3)、通过访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址(URL代表统一资源定位符,也即网址);
(4)、通过Web访问组件验证令牌,若令牌未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
(5)、Websocket连接建立后,通过Web访问组件打开Docker容器的含有控制台终端的Web页面。
实施例2:
本发明的一种Web访问Docker容器的方法,使用访问支持组件和Web访问组件,分别负责对Docker容器访问提供支持功能和Web访问连接的建立和访问功能;所述方法包括以下步骤:
(1)、用户通过在Web页面找到要访问的Docker容器并发起访问请求;
(2)、通过访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,并将令牌返回给用户;
(3)、通过访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
(4)、通过Web访问组件验证令牌,若令牌未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
(5)、Websocket连接(Websocket是HTML5一种新的协议,它实现了浏览器与服务器全双工通信)建立后,通过Web访问组件打开Docker容器的含有控制台终端的Web页面。
还包括步骤(6),通过Web访问组件监听Websocket连接,Web访问组件使用三个线程分别处理标准输入信息、标准输出信息和标准错误输出信息。
实施例3:
本发明的一种Web访问Docker容器的方法,使用访问支持组件和Web访问组件,分别负责对Docker容器访问提供支持功能和Web访问连接的建立和访问功能;所述方法包括以下步骤:
(1)、用户通过在Web页面找到要访问的Docker容器并发起访问请求;
(2)、通过访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,创建Docker容器访问的令牌时,设置令牌失效时间,并将令牌返回给用户;
(3)、通过访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
(4)、通过Web访问组件验证令牌,若令牌错误或失效为未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
(5)、Websocket连接建立后,通过Web访问组件打开Docker容器的含有控制台终端的Web页面。
还包括步骤(6),通过Web访问组件监听Websocket连接,Web访问组件使用三个线程分别处理标准输入信息、标准输出信息和标准错误输出信息。
处理标准输出信息的线程将经Websocket连接返回到Web页面标准输出信息发送到Web页面的标准输出文件(stdout)内;处理标准错误输出信息的线程将经Websocket连接返回到Web页面标准错误输出信息发送到Web页面的标准错误输出文件(stderr)内。
处理标准输入信息的线程将从Web页面上输入的标准输入信息通过Websocket连接发送给控制台终端的标准输入文件(stdin)中。
实施例4:
本发明的一种Web访问Docker容器的系统,包括:
①访问请求单元,用于通过在Web页面找到要访问的Docker容器并发起访问请求;
②访问支持组件,负责对Docker容器访问提供支持功能;
访问支持组件包括建立及判断单元和获取单元,
建立及判断单元,用于访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,并将令牌返回给用户;
获取单元,用于访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
③Web访问组件,负责对Docker容器访问提供Web访问连接的建立和访问功能;
Web访问组件包括验证令牌单元和Websocket连接单元,
验证令牌单元,用于验证令牌,若令牌未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
Websocket连接单元,用于建立Websocket连接,打开Docker容器的含有控制台终端的Web页面。
实施例5:
本发明的一种Web访问Docker容器的系统,包括:
①访问请求单元,用于通过在Web页面找到要访问的Docker容器并发起访问请求;
②访问支持组件,负责对Docker容器访问提供支持功能;
访问支持组件包括建立及判断单元和获取单元,
建立及判断单元,用于访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,并将令牌返回给用户;
获取单元,用于访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
③Web访问组件,负责对Docker容器访问提供Web访问连接的建立和访问功能;
Web访问组件包括验证令牌单元和Websocket连接单元,
验证令牌单元,用于验证令牌,若令牌未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
Websocket连接单元,用于建立Websocket连接,打开Docker容器的含有控制台终端的Web页面。
Web访问组件还包括监听单元,监听单元用于监听Websocket连接,并使用三个线程分别处理标准输入信息、标准输出信息和标准错误输出信息。
实施例6:
本发明的一种Web访问Docker容器的系统,包括:
①访问请求单元,用于通过在Web页面找到要访问的Docker容器并发起访问请求;
②访问支持组件,负责对Docker容器访问提供支持功能;
访问支持组件包括建立及判断单元和获取单元,
建立及判断单元,用于访问支持组件判断用户权限;若无权限,则中止连接,并返回失败信息;若有权限,则创建该次Docker容器访问的令牌,创建Docker容器访问的令牌设置有令牌失效时间,并将令牌返回给用户;
获取单元,用于访问支持组件获取Docker容器的ID以及所在宿主机的IP地址,生成Docker容器接口的URL地址;
③Web访问组件,负责对Docker容器访问提供Web访问连接的建立和访问功能;
Web访问组件包括验证令牌单元和Websocket连接单元,
验证令牌单元,用于验证令牌,若令牌错误或失效为未通过验证,则中止连接;若令牌通过验证则通过Docker容器接口的URL地址建立Websocket连接;
Websocket连接单元,用于建立Websocket连接,打开Docker容器的含有控制台终端的Web页面。
Web访问组件还包括监听单元,监听单元用于监听Websocket连接,并使用三个线程分别处理标准输入信息、标准输出信息和标准错误输出信息。
处理标准输出信息的线程,用于将经Websocket连接返回到Web页面标准输出信息发送到Web页面的标准输出文件内;
处理标准错误输出信息的线程,用于将经Websocket连接返回到Web页面标准错误输出信息发送到Web页面的标准错误输出文件内。
处理标准输入信息的线程,用于将从Web页面上输入的标准输入信息通过Websocket连接发送给控制台终端的标准输入文件中。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的6种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。