CN105872019B - 一种Web端登录Docker容器的方法和装置 - Google Patents
一种Web端登录Docker容器的方法和装置 Download PDFInfo
- Publication number
- CN105872019B CN105872019B CN201610169619.4A CN201610169619A CN105872019B CN 105872019 B CN105872019 B CN 105872019B CN 201610169619 A CN201610169619 A CN 201610169619A CN 105872019 B CN105872019 B CN 105872019B
- Authority
- CN
- China
- Prior art keywords
- container
- ssh
- docker
- service
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种Web端登录Docker容器的方法和装置,其中,方法包括:接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;解析所述URL请求得到所述主机地址和所述容器ID;根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。本发明能够实现通过Web端直接登录远程主机内Docker容器的目的,方便降低Docker容器领域开发运维的复杂度,提高开发运维效率,为用户提供更便利的访问方式。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种Web端登录Docker容器的方法和装置。
背景技术
在互联网领域的开发运维过程中,工作人员常常需要登录远程主机以及在集群中不同主机之间进行跳转,以完成日常的开发、维护、管理等工作。
SSH(Secure Shell)协议是一种建立在应用层和传输层基础上的安全协议,它实现了基于口令和基于秘钥两种级别的安全验证,几乎适应于所有的UNIX平台,是目前广泛使用的为远程登录会话和其他网络服务提供安全性的协议。
传统的SSH远程登录,一般需要Xshell、SecureCRT、Putty等SSH客户端软件,用户需要在终端上安装这些软件,才能够远程登录主机;登录主机之后,用户需要手动输入命令才能够登录主机内的Docker容器。这种传统的SSH远程登录方式要求用户必须安装这些软件,在不方便安装这些软件或者有防火墙屏蔽的终端上,还不能够实现SSH远程登录。
随着技术的发展,技术人员研究出了基于Web端SSH登录方式,这种方式替代传统的SSH远程登录的方式,这种方式只需要网络连接和简单的浏览器环境,在访问URL中指定参数就能够直接登录远程主机,并在浏览器页面中模拟终端交互。目前,技术应用比较成熟的一种开源Web端SSH方案是Shellinabox,它是一款实用AJAX的Web终端模拟器,它通过Service(服务)实现对远程主机的访问,启动Shellinabox时需要操作人员手动配置一系列Service以指定可以访问的主机;用户通过在URL路径里指定Service中已经配置的主机地址来实现对相应主机的远程登录。但在登录主机之后,仍旧需要用户手动输入命令才能够登录主机内的Docker容器。
虽然,这种基于Web端SSH登录方式相比传统的SSH远程登录方式,其便于实现和用户操作,但基于Web端SSH登录方式仍旧存在以下技术缺点:
1、Shellinabox仅提供了一种通过服务启动参数配置Service,从而配置登录参数的方法,但在完成配置之后,用户无法远程登录Service中不存在的登录参数进行登录;即,用户可远程访问的主机受到前期Service配置的限制,无法随意地远程登录任意主机,不够灵活。
2、Shellinabox和传统的SSH登录方式一样,仅支持远程主机的登录,而不支持直接登录Docker容器,这使得对Docker容器的开发、运维的复杂度和工作效率受到限制。
发明内容
有鉴于此,本发明提供了一种Web端登录Docker容器的方法和装置,以实现通过Web端直接登录远程主机内Docker容器,方便降低Docker容器领域开发运维的复杂度,提高开发运维效率,为用户提供更便利的访问方式。
为了达到上述发明目的,本发明采用了如下技术方案:
本发明第一方面提供了一种Web端登录Docker容器的方法,该方法应用于服务端,该方法包括:
接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;
解析所述URL请求得到所述主机地址和所述容器ID;
根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;以使所述远程主机解析所述SSH远程登录命令中的用户名参数部分得到所述容器ID。
可选的,所述URL请求中的所述主机地址和所述容器ID是按照预设顺序并采用分隔符间隔的方式设置的;
则所述解析所述URL请求得到所述主机地址和所述容器ID,具体为
按照预设顺序解析相邻两个分隔符之间的内容得到所述主机地址和所述容器ID。
可选的,所述预设顺序为第一个与第二个间隔符之间的部分设置为所述主机地址;第二个间隔符和第三个间隔符之间的部分设置为所述容器ID;或者,
所述预设顺序为第一个与第二个间隔符之间的部分设置为所述容器ID;第二个间隔符和第三个间隔符之间的部分设置为所述主机地址。
可选的,所述方法还包括:
接收所述远程主机反馈的访问出错信息,向用户展示所述访问出错信息,以提示用户访问出错。
在本发明第二方面提供了另一种Web端登录Docker容器的方法,该方法应用于配置有SSH服务的远程主机,该方法包括:
通过预先配置的SSH服务监听远程连接端口;所述SSH服务中嵌入有Docker容器登录命令;
当监听到服务端发送的SSH远程登录命令时,解析所述SSH远程登录命令,获取容器ID;
生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,在所述生成并执行携带有所述容器ID的Docker容器登录命令之前,所述方法还包括:
预先配置密码验证回调函数为不需验证密码,以跳过密码验证实现无密码登录。
可选的,在所述生成并执行携带有所述容器ID的Docker容器登录命令之前,所述方法还包括:
预先配置密码验证回调函数仅对用户名部分的字符串位数进行验证,验证字符串位数是否为标准规定的容器ID位数,如果是,则执行步骤:生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述方法还包括:
判断出所述容器ID标识的容器不属于所述远程主机时,则向服务端反馈访问出错信息。
可选的,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;
则所述解析所述SSH远程登录命令,获取容器ID,具体为:
调用用户名参数获取函数,从所述SSH远程登录命令中获取用户名参数部分的字符串,将所述字符串作为所述容器ID。
在本发明第三方面提供了一种用于实现Web端登录Docker容器的装置,该装置应用于服务端,该装置包括:
URL请求接收单元,用于接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;
解析单元,用于解析所述URL请求得到所述主机地址和所述容器ID;
服务建立以及执行单元,用于根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;以使所述远程主机解析所述SSH远程登录命令中的用户名参数部分得到所述容器ID。
可选的,所述URL请求中的所述主机地址和所述容器ID是按照预设顺序并采用分隔符间隔的方式设置的;
则所述解析单元具体用于:
按照预设顺序解析相邻两个分隔符之间的内容得到所述主机地址和所述容器ID。
可选的,所述预设顺序为第一个与第二个间隔符之间的部分设置为所述主机地址;第二个间隔符和第三个间隔符之间的部分设置为所述容器ID;或者,
所述预设顺序为第一个与第二个间隔符之间的部分设置为所述容器ID;第二个间隔符和第三个间隔符之间的部分设置为所述主机地址。
可选的,所述装置还包括:接收所述远程主机反馈的访问出错信息,向用户展示所述访问出错信息,以提示用户访问出错。
在本发明第四方面提供了另一种用于实现Web端登录Docker容器的装置,该装置应用于配置有SSH服务的远程主机,该装置包括:
监听单元,用于通过预先配置的SSH服务监听远程连接端口;所述SSH服务中嵌入有Docker容器登录命令;
解析单元,用于当监听到服务端发送的SSH远程登录命令时,解析所述SSH远程登录命令,获取容器ID;
容器登录命令生成及执行单元,用于生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述装置还包括:
第一配置单元,用于预先配置密码验证回调函数为不需验证密码,以跳过密码验证实现无密码登录。
可选的,所述装置还包括:
第二配置单元,用于预先配置密码验证回调函数仅对用户名部分的字符串位数进行验证,验证字符串位数是否为标准规定的容器ID位数,如果是,则执行步骤:生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述装置还包括:
判断出所述容器ID标识的容器不属于所述远程主机时,则向服务端反馈访问出错信息。
可选的,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;
则所述解析单元具体用于:
调用用户名参数获取函数,从所述SSH远程登录命令中获取用户名参数部分的字符串,将所述字符串作为所述容器ID。
相较于现有技术,本发明具有以下有益效果:
本发明提供的Web端登录Docker容器的方法,对shellinabox中Service(服务)的生成方式做了修改,在本发明中,首先,接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;然后,解析所述URL请求得到所述主机地址和所述容器ID;再根据所述主机地址和所述容器ID建立服务;本发明抛弃了shellinabox原有的预先静态设置Service的方式,而另辟蹊径提出了根据用户的URL请求动态建立Service的方式,这样,用户就可以不受限制地,可以访问任意一个远程主机。本发明在动态生成Service之后,直接调用该Service执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。在本发明中,远程主机中创建了独立的SSH服务,专门用于根据SSH远程登录命令解析获取容器ID,进而动态生成Docker容器登录命令,直接实现登录指定Docker容器。可以看出,本发明提供的技术方案为用户提供了直接登录远程主机内Docker容器的实现方法,方便用户快速直接访问Docker容器,与现有的先登录主机,再手动输入命令登录Docker容器的方式相比,本发明无需用户手动地输入命令,能够简化用户操作,可以通过一个URL请求就直接实现容器登录,能够提高容器开发运维的效率。
附图说明
为了清楚地理解本发明的技术方案,下面对描述本发明具体实施方式时用到的附图做一简要说明。显而易见地,这些附图仅是本发明的部分实施例,本领域技术人员在不付出创造性劳动的前提下,还可以获得其它的附图。
图1是本发明提供的应用于服务端的一种Web端登录Docker容器的方法的流程图;
图2是本发明提供的应用于远程主机的一种Web端登录Docker容器的方法流程图;
图3是本发明提供的应用于服务端的一种Web端登录Docker容器的装置的结构图;
图4是本发明提供的应用于远程主机的一种Web端登录Docker容器的装置结构图。
具体实施方式
为使本发明的发明目的、技术手段和达到的技术效果更加清楚、完整,下面结合附图对本发明的具体实施方式进行描述。
为了清楚地理解本发明提供的一种Web端登录Docker容器的方法和装置的具体实施方式,首先介绍本发明技术方案的应用环境。
本发明技术方案是应用于远程登录的环境中,通过远程登录,用户通过本地主机便能与网络上另一远程主机取得“联系”,并进行程序交互。通过远程登录,一旦登录远程主机,用户可以操作远程主机允许的任何事情,比如:读取文件、编辑文件或者删除文件等。远程登录的应用环境包括:本地主机、服务器(网络服务器)和远程主机。用户通过在本地主机上Web操作,通过Web端登录方式,利用服务器登录到远程主机上,进而对远程主机上文件进行操作。而Docker容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到Linux机器上,可以实现虚拟化。由于目前云服务的基石就是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。Docker就是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台,Docker容器位于主机内,由于主机负责加载和维护,Docker容器用来存储和组织其他对象的对象。因此,用户通过远程登录到远程主机之后,还需要进一步地登录Docker容器,再对容器进行相应操作。
本发明提供的技术方案为了简化用户的登录操作,提供了基于Web端登录Docker容器的方案,用户仅需要基于Web发起远程登录请求,而服务器和远程主机端会自动的执行相应操作,以直接登录进入远程主机内的Docker容器,这样就打通了Web端登录Docker容器的整个流程,无需用户手动输入命令,提高了登录响应时间。
接下来,先对本发明提供的一种Web端登录Docker容器的方法的具体实现方式进行解释说明。
参见图1,图1是本发明提供的应用于服务端的一种Web端登录Docker容器的方法的流程图;图1所示方法,应用于服务端,该方法可以包括:
步骤101:接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;
用户在本地任何一台主机上通过Web端登陆方式发起URL(Uniform ResourceLocator,统一资源定位器)请求;Web端登陆,就是通过网页登陆的方式,现在的网络服务模式一般有两种:B/S,C/S;B/S模式就是浏览器(B)/服务端(S),用户通过浏览器访问服务器提供的网络服务。例如:用户可以通过浏览器输入特定的URL,以发起访问请求。Web的本意是网站,Web端登录方式就是指通过浏览器访问服务器提供的服务。而C/S模式就是客户端(C)/服务端(S),即,用户通过客户端和服务器进行通信。在本发明实施例中,采用的是B/S模式,即,用户通过浏览器登录服务端。在用户远程登录到主机内容器之后,对容器的操作将完全通过浏览器页面进行显示。
在实现时,用户通过浏览器发送URL请求,该URL请求包括:有待访问的远程主机的主机地址和待访问的容器ID。
服务端接收到URL请求后,执行步骤102。
步骤102:解析所述URL请求得到所述主机地址和所述容器ID;
在实现时,所述URL请求中的所述主机地址和所述容器ID是按照预设顺序并采用分隔符间隔的方式设置的;
则所述解析所述URL请求得到所述主机地址和所述容器ID,具体为
按照预设顺序解析相邻两个分隔符之间的内容得到所述主机地址和所述容器ID。
在实现时,所述预设顺序为第一个与第二个间隔符之间的部分设置为所述主机地址;第二个间隔符和第三个间隔符之间的部分设置为所述容器ID。
在实现时,所述预设顺序也可以为第一个与第二个间隔符之间的部分设置为所述容器ID;第二个间隔符和第三个间隔符之间的部分设置为所述主机地址。
下面通过一个示例1对上述URL请求的格式以及解析方式进行解释说明。
示例1,URL请求如下:
http://localhost:4200/domeos@10.11.150.71@e5e7d49bbd28@
其中,localhost:4200为本地主机地址;
其中,domeos为服务端启动时预先设定的URL路径前缀;
其中,“10.11.150.71”为待访问的远程主机的主机地址;
其中,“e5e7d49bbd28”为待访问的容器ID;
可以看出,URL请求中第一个与第二个分隔符@之间是待访问的远程主机的主机地址,而第二个与第三个分隔符@之间是待访问的容器ID。
这样,服务端将自动解析预设URL前缀后第一个与第二个分隔符@之间的部分为待访问的远程主机的主机地址;第二个与第三个分隔符@之间的部分为待访问的容器ID。
服务端对URL请求解析完毕后,执行步骤103。
步骤103:根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
服务端根据解析得到的主机地址和容器ID,动态地建立服务(Service);在新的服务建立之后,还需要完成对服务的注册。在建立了与URL请求对应的Service之后,直接运行这一Service的cmdline命令,即,登录到远程主机的Docker容器内部。
在服务建立过程中需要将path配置为“服务端前缀@带待访问的远程主机的主机地址@待访问的容器ID@”其中,@表示分隔符,当然,在实现时,也可以采用其他字符作为分隔符。还需要并将cmdline设置为远程SSH登录至容器内部。
以上述示例1为例,针对示例1的URL请求,服务端动态建立服务,配置服务中的path为“domeos@10.11.150.71@e5e7d49bbd28@”。
服务器生成了服务之后,直接调用该服务执行SSH远程登录命令;待访问的远程主机监听到该SSH远程登录命令后,解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
从上述实施例可以看出,用户利用本发明提供的技术方案,仅需要通过Web端发起URL请求,之后无需用户手动输入任何命令,由服务端和远程主机端执行相应操作,就可以登录进入Docker容器。可以理解的是,用户通过一步输入URL请求的操作,就可直接登录远程主机内的Docker容器,极大地简化了Docker容器的远程登录操作,方便用户对Docker容器的开发和维护。
本发明提供的这种Web登录Docker容器的方法,是基于开源Web终端框架Shellinabox,提出了动态建立Service的建立方式,实现了按照URL请求中指定待访问主机的主机地址和容器ID完成登录请求,同时,在远程主机侧,通过嵌入docker exec命令创建独立SSH服务,实现SSH服务直接登录Docker容器内部,这样就能够提高容器相关开发运维的效率,为相关工作人员提供便利。
另外,在实现时,用户可能由于疏忽将Docker容器ID输错,导致无法登录,但用户自己未能检查出错误,可能一味地等待登录结果,或者,盲目地重复发起URL请求。针对此情况,本发明还提供了出错提示机制,具体在上述方法的基础上,可以增加如下步骤:接收所述远程主机反馈的访问出错信息,向用户展示所述访问出错信息,以提示用户访问出错。利用本发明的错误提示机制,用户就能够在第一时间发现自己的错误,以修改错误重新发起URL请求,从而避免了盲目重复登录导致的耗时耗费网络资源的问题。
本发明提供的Web端登录Docker容器的方法,对shellinabox中Service(服务)的生成方式做了修改,在本发明中,首先,接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;然后,解析所述URL请求得到所述主机地址和所述容器ID;再根据所述主机地址和所述容器ID建立服务;本发明抛弃了shellinabox原有的预先静态设置Service的方式,而另辟蹊径提出了根据用户的URL请求动态建立Service,这样,用户就可以不受限制地,可以访问任意一个远程主机。本发明在动态生成Service之后,直接调用该Service执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。可以看出,本发明提供的技术方案为用户提供了直接登录远程主机内Docker容器的实现方法,方便用户快速直接访问Docker容器,与现有的先登录主机,再手动输入命令登录Docker容器的方式相比,本发明无需用户手动地输入命令,能够简化用户操作,可以通过一个URL请求就直接实现容器登录,能够提高容器开发运维的效率。
接下来,对本发明提供了另一种Web端登录Docker容器的方法进行解释说明。
参见图2,图2是本发明提供的应用于远程主机的一种Web端登录Docker容器的方法流程图,该方法应用于远程主机端,也可以理解为应用于远程客户端,如图2所示,该方法可以包括:
步骤201:通过预先配置的SSH服务监听远程连接端口;所述SSH服务中嵌入有Docker容器登录命令;
远程主机端预先配置有独立的SSH服务,并启动SSH服务监听远程连接端口,该远程连接端口是远程主机端预先配置的用于监听远程登录的端口。对于用户而言通过Web端仅需要连接待访问的远程主机上该端口的SSH服务,发起包含容器ID的远程登录命令,就可以直接进入容器内部,进行相关容器操作。
远程主机端预先配置的SSH服务中必须嵌入有Docker容器登录命令,这是为了使远程主机后续直接执行Docker容器登录命令打好服务基础。
步骤202:当监听到服务端发送的SSH远程登录命令时,解析所述SSH远程登录命令,获取容器ID;
在实现时,远程主机调用ssh.NewServerConn(conn,con,sshConfig)建立新的SSH连接,获取SSH连接结构sshConn,解析SSH远程登录命令,从中获取容器ID。
在实现时,如果服务端设置的所述SSH远程登录命令中用户名参数部分填充有所述容器ID;
则远程主机端执行步骤202具体过程:
调用用户名参数获取函数,从所述SSH远程登录命令中获取用户名参数部分的字符串,将所述字符串作为所述容器ID。
远程主机调用sshConn.User()获取SSH登录用户名部分的字符串,将其保存为容器ID(container ID)。
远程主机在执行完毕解析操作之后,执行步骤203。
步骤203:生成并执行携带有所述容器ID的Docker容器登录命令。
远程主机在获得容器ID后,将所述容器ID(container-id)填充到SSH服务中设置的Docker容器登录命令中,并执行docker exec-it<container-id>/bin/bash命令,进入容器内部。
这里需要说明的是,远程主机端在接收到SSH远程登录命令之后,一般情况下,是需要进行密码验证处理,验证用户身份的合法性。本发明技术方案在实现时,可以沿用传统的密码验证处理,具体实现方式是,在上述步骤201之后,当监听到服务端发送的SSH远程登录命令时,与服务端进行交互,获得用户名和密码,对用户身份的合法性进行验证,如果,用户名和密码匹配时,则用户身份合法,验证通过。然后再执行步骤202和步骤203。
但为了进一步简化整个登录流程,本发明还提供了一种无密码登录机制。该机制主要是考虑到,用户既然知道待访问的主机的主机地址和容器ID,说明用户了解关键信息,用户应该是合法用户。具体实现方式是,在上述方法的基础上,预先配置密码验证回调函数为不需验证密码,以跳过密码验证实现无密码登录。
通过预先配置这种无密码验证方式,远程主机端就可以跳过传统的密码验证过程,而直接进行无密码登录。
在无密码登录机制的基础上,本发明还提供了一种可选的实现方式,具体是,在上述方法的基础上,预先配置密码验证回调函数仅对用户名部分的字符串位数进行验证,验证字符串位数是否为标准规定的容器ID位数,如果是,则执行步骤:生成并执行携带有所述容器ID的Docker容器登录命令。
目前,Docker标准规定的容器ID位数为12位,如果用户输入的容器ID为12位,则认为合格,进而继续执行后续步骤。否则,停止执行后续步骤。
通过对用户输入的容器ID的正确性进行验证,以间接验证用户是否为合法用户。但这种验证方式不需要再与服务端进行交互,能够极大地提高验证效率。
另外,在实现时,用户可能由于疏忽将Docker容器ID输错,导致无法登录,但用户自己未能检查出错误,可能一味地等待登录结果,或者,盲目地重复发起URL请求。针对此情况,本发明还提供了出错提示机制,具体在上述方法的基础上,可以增加如下步骤:判断出所述容器ID标识的容器不属于所述远程主机时,则向服务端反馈访问出错信息。所述访问出错信息可以用于提示用户输入的容器ID出错。
利用本发明的错误提示机制,用户就能够在第一时间发现自己的错误,以修改错误重新发起URL请求,从而避免了盲目重复登录导致的耗时耗费网络资源的问题。
本发明提供的Web端登录Docker容器的方法,远程主机中创建了独立的SSH服务,专门用于根据SSH远程登录命令解析获取容器ID,进而动态生成Docker容器登录命令,直接实现登录指定Docker容器。可以看出,本发明提供的技术方案为用户提供了直接登录远程主机内Docker容器的实现方法,方便用户快速直接访问Docker容器,与现有的先登录主机,再手动输入命令登录Docker容器的方式相比,本发明无需用户手动地输入命令,能够简化用户操作,可以通过一个URL请求就直接实现容器登录,能够提高容器开发运维的效率。
接下来,对本发明提供了一种Web端登录Docker容器的装置进行解释说明。
参见图3,图3是本发明提供的应用于服务端的一种Web端登录Docker容器的装置结构图,该装置应用于服务端,如图3所示,该装置可以包括:
URL请求接收单元301,用于接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;
解析单元302,用于解析所述URL请求得到所述主机地址和所述容器ID;
服务建立以及执行单元303,用于根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;以使所述远程主机解析所述SSH远程登录命令中的用户名参数部分得到所述容器ID。
可选的,所述URL请求中的所述主机地址和所述容器ID是按照预设顺序并采用分隔符间隔的方式设置的;
则所述解析单元具体用于:
按照预设顺序解析相邻两个分隔符之间的内容得到所述主机地址和所述容器ID。
可选的,所述预设顺序为第一个与第二个间隔符之间的部分设置为所述主机地址;第二个间隔符和第三个间隔符之间的部分设置为所述容器ID;或者,
所述预设顺序为第一个与第二个间隔符之间的部分设置为所述容器ID;第二个间隔符和第三个间隔符之间的部分设置为所述主机地址。
可选的,所述装置还包括:接收所述远程主机反馈的访问出错信息,向用户展示所述访问出错信息,以提示用户访问出错。
接下来,对本发明提供了另一种Web端登录Docker容器的装置进行解释说明。
参见图4,图4是本发明提供的应用于远程主机的一种Web端登录Docker容器的装置结构图,该装置应用于配置有SSH服务的远程主机,如图4所示,该装置可以包括:
监听单元401,用于通过预先配置的SSH服务监听远程连接端口;所述SSH服务中嵌入有Docker容器登录命令;
解析单元402,用于当监听到服务端发送的SSH远程登录命令时,解析所述SSH远程登录命令,获取容器ID;
容器登录命令生成及执行单元403,用于生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述装置还包括:
第一配置单元,用于预先配置密码验证回调函数为不需验证密码,以跳过密码验证实现无密码登录。
可选的,所述装置还包括:
第二配置单元,用于预先配置密码验证回调函数仅对用户名部分的字符串位数进行验证,验证字符串位数是否为标准规定的容器ID位数,如果是,则执行步骤:生成并执行携带有所述容器ID的Docker容器登录命令。
可选的,所述装置还包括:
判断出所述容器ID标识的容器不属于所述远程主机时,则向服务端反馈访问出错信息。
可选的,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;
则所述解析单元具体用于:
调用用户名参数获取函数,从所述SSH远程登录命令中获取用户名参数部分的字符串,将所述字符串作为所述容器ID。
相较于现有技术,本发明具有以下有益效果:
本发明提供的Web端登录Docker容器的方法,对shellinabox中Service(服务)的生成方式做了修改,在本发明中,首先,接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;然后,解析所述URL请求得到所述主机地址和所述容器ID;再根据所述主机地址和所述容器ID建立服务;本发明抛弃了shellinabox原有的预先静态设置Service的方式,而另辟蹊径提出了根据用户的URL请求动态生成Service,这样,用户就可以不受限制地,可以访问任意一个远程主机。本发明在动态生成Service之后,根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。在本发明中,远程主机中创建了独立的SSH服务,专门用于根据SSH远程登录命令解析获取容器ID,进而动态生成Docker容器登录命令,直接实现登录指定Docker容器。可以看出,本发明提供的技术方案为用户提供了直接登录远程主机内Docker容器的实现方法,方便用户快速直接访问Docker容器,与现有的先登录主机,再手动输入命令登录Docker容器的方式相比,本发明无需用户手动地输入命令,能够简化用户操作,可以通过一个URL请求就直接实现容器登录,能够提高容器开发运维的效率。
应当注意,尽管在上文详细描述中提及了装置中的若干单元,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
以上所述仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (12)
1.一种Web端登录Docker容器的方法,其特征在于,应用于服务端,所述方法包括:
接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;
解析所述URL请求得到所述主机地址和所述容器ID;
根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
2.根据权利要求1所述的一种Web端登录Docker容器的方法,其特征在于,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;以使所述远程主机解析所述SSH远程登录命令中的用户名参数部分得到所述容器ID。
3.根据权利要求1所述的一种Web端登录Docker容器的方法,其特征在于,
所述URL请求中的所述主机地址和所述容器ID是按照预设顺序并采用分隔符间隔的方式设置的;
则所述解析所述URL请求得到所述主机地址和所述容器ID,具体为
按照预设顺序解析相邻两个分隔符之间的内容得到所述主机地址和所述容器ID。
4.根据权利要求3所述的一种Web端登录Docker容器的方法,其特征在于,
所述预设顺序为第一个与第二个间隔符之间的部分设置为所述主机地址;第二个间隔符和第三个间隔符之间的部分设置为所述容器ID;或者,
所述预设顺序为第一个与第二个间隔符之间的部分设置为所述容器ID;第二个间隔符和第三个间隔符之间的部分设置为所述主机地址。
5.根据权利要求1所述的一种Web端登录Docker容器的方法,其特征在于,所述方法还包括:
接收所述远程主机反馈的访问出错信息,向用户展示所述访问出错信息,以提示用户访问出错。
6.一种Web端登录Docker容器的方法,其特征在于,应用于配置有SSH服务的远程主机,所述方法包括:
通过预先配置的SSH服务监听远程连接端口;所述SSH服务中嵌入有Docker容器登录命令;
当监听到服务端发送的SSH远程登录命令时,解析所述SSH远程登录命令,获取容器ID;
生成并执行携带有所述容器ID的Docker容器登录命令。
7.根据权利要求6所述的一种Web端登录Docker容器的方法,其特征在于,在所述生成并执行携带有所述容器ID的Docker容器登录命令之前,所述方法还包括:
预先配置密码验证回调函数为不需验证密码,以跳过密码验证实现无密码登录。
8.根据权利要求6所述的一种Web端登录Docker容器的方法,其特征在于,在所述生成并执行携带有所述容器ID的Docker容器登录命令之前,所述方法还包括:
预先配置密码验证回调函数仅对用户名部分的字符串位数进行验证,验证字符串位数是否为标准规定的容器ID位数,如果是,则执行步骤:生成并执行携带有所述容器ID的Docker容器登录命令;如果否,则停止执行步骤:生成并执行携带有所述容器ID的Docker容器登录命令。
9.根据权利要求6所述的一种Web端登录Docker容器的方法,其特征在于,所述方法还包括:
判断出所述容器ID标识的容器不属于所述远程主机时,则向服务端反馈访问出错信息。
10.根据权利要求6所述的一种Web端登录Docker容器的方法,其特征在于,所述SSH远程登录命令中用户名参数部分填充有所述容器ID;
则所述解析所述SSH远程登录命令,获取容器ID,具体为:
调用用户名参数获取函数,从所述SSH远程登录命令中获取用户名参数部分的字符串,将所述字符串作为所述容器ID。
11.一种用于实现Web端登录Docker容器的装置,其特征在于,应用于服务端,所述装置包括:
URL请求接收单元,用于接收携带有待访问的远程主机的主机地址和待访问的容器ID的URL请求;
解析单元,用于解析所述URL请求得到所述主机地址和所述容器ID;
服务建立以及执行单元,用于根据所述主机地址和所述容器ID建立服务,调用所述服务执行SSH远程登录命令;以使所述远程主机通过SSH服务通过端口监听到所述SSH远程登录命令,并解析所述SSH远程登录命令得到所述容器ID,生成并执行携带有所述容器ID的Docker容器登录命令。
12.一种用于实现Web端登录Docker容器的装置,其特征在于,应用于配置有SSH服务的远程主机,所述装置包括:
监听单元,用于通过预先配置的SSH服务监听远程连接端口;所述SSH服务中嵌入有Docker容器登录命令;
解析单元,用于当监听到服务端发送的SSH远程登录命令时,解析所述SSH远程登录命令,获取容器ID;
容器登录命令生成及执行单元,用于生成并执行携带有所述容器ID的Docker容器登录命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610169619.4A CN105872019B (zh) | 2016-03-23 | 2016-03-23 | 一种Web端登录Docker容器的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610169619.4A CN105872019B (zh) | 2016-03-23 | 2016-03-23 | 一种Web端登录Docker容器的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105872019A CN105872019A (zh) | 2016-08-17 |
CN105872019B true CN105872019B (zh) | 2019-01-25 |
Family
ID=56625102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610169619.4A Active CN105872019B (zh) | 2016-03-23 | 2016-03-23 | 一种Web端登录Docker容器的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105872019B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844489A (zh) * | 2016-12-24 | 2017-06-13 | 上海七牛信息技术有限公司 | 一种文件操作方法、装置以及系统 |
CN106685949A (zh) * | 2016-12-24 | 2017-05-17 | 上海七牛信息技术有限公司 | 一种容器访问方法、装置以及系统 |
CN108667779B (zh) * | 2017-03-31 | 2020-09-08 | 华为技术有限公司 | 一种远程登录容器的方法及服务器 |
CN107608768B (zh) * | 2017-07-26 | 2021-03-23 | 广州亦云信息技术股份有限公司 | 基于命令行模式的资源访问方法、电子设备及存储介质 |
CN107493344B (zh) * | 2017-08-29 | 2020-07-28 | 浪潮云信息技术股份公司 | 一种Web访问Docker容器的方法及系统 |
CN109525624B (zh) * | 2017-09-20 | 2022-01-04 | 腾讯科技(深圳)有限公司 | 一种容器登录方法、装置及存储介质 |
CN107480509A (zh) * | 2017-09-22 | 2017-12-15 | 携程旅游网络技术(上海)有限公司 | 运维安全审计系统登录容器方法、系统、设备及存储介质 |
CN107634951A (zh) * | 2017-09-22 | 2018-01-26 | 携程旅游网络技术(上海)有限公司 | Docker容器安全管理方法、系统、设备及存储介质 |
CN107608763A (zh) * | 2017-09-26 | 2018-01-19 | 中国科学院声学研究所 | 一种通过Web浏览器进入Docker容器操作的方法 |
CN107819874B (zh) * | 2017-11-27 | 2020-12-01 | 南京城市职业学院 | 一种远程控制防火墙终端的方法 |
CN108737559A (zh) * | 2018-05-30 | 2018-11-02 | 郑州云海信息技术有限公司 | 目标系统的远程登录方法、系统、设备及可读存储介质 |
CN108762893A (zh) * | 2018-06-07 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种浏览器连接Docker容器的方法、装置和存储介质 |
CN109901910B (zh) * | 2019-01-17 | 2021-12-07 | 珠海金山网络游戏科技有限公司 | 基于分布式容器的文件拉取或推送方法及装置 |
CN110286999B (zh) * | 2019-05-28 | 2023-08-29 | 平安科技(深圳)有限公司 | 访问程序关联性隔离器的方法、装置及计算机可读存储介质 |
CN114531433B (zh) * | 2020-11-06 | 2023-07-21 | 中盈优创资讯科技有限公司 | 一种web登陆设备的交互方法和装置 |
CN113067834A (zh) * | 2021-04-09 | 2021-07-02 | 上海新炬网络信息技术股份有限公司 | 基于Web浏览器远程控制服务器的方法 |
CN114500537A (zh) * | 2022-03-24 | 2022-05-13 | 杭州博盾习言科技有限公司 | 容器服务的访问方法、系统、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546642A (zh) * | 2012-01-16 | 2012-07-04 | 深圳市深信服电子科技有限公司 | 远程登录的方法及装置 |
CN102984139A (zh) * | 2012-11-16 | 2013-03-20 | 中兴通讯股份有限公司 | 多用户接入设备的登录方法及系统、用户终端 |
CN103179135A (zh) * | 2013-04-19 | 2013-06-26 | 网宿科技股份有限公司 | 基于ssh中转机的远程管理方法 |
CN103685399A (zh) * | 2012-09-17 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种登录类Unix虚拟容器的方法、装置和系统 |
CN105282095A (zh) * | 2014-06-18 | 2016-01-27 | 中兴通讯股份有限公司 | 虚拟桌面登录验证方法和装置 |
-
2016
- 2016-03-23 CN CN201610169619.4A patent/CN105872019B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546642A (zh) * | 2012-01-16 | 2012-07-04 | 深圳市深信服电子科技有限公司 | 远程登录的方法及装置 |
CN103685399A (zh) * | 2012-09-17 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种登录类Unix虚拟容器的方法、装置和系统 |
CN102984139A (zh) * | 2012-11-16 | 2013-03-20 | 中兴通讯股份有限公司 | 多用户接入设备的登录方法及系统、用户终端 |
CN103179135A (zh) * | 2013-04-19 | 2013-06-26 | 网宿科技股份有限公司 | 基于ssh中转机的远程管理方法 |
CN105282095A (zh) * | 2014-06-18 | 2016-01-27 | 中兴通讯股份有限公司 | 虚拟桌面登录验证方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105872019A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105872019B (zh) | 一种Web端登录Docker容器的方法和装置 | |
EP3140981B1 (en) | Application customization | |
CN107493344B (zh) | 一种Web访问Docker容器的方法及系统 | |
US11700262B2 (en) | System and method to securely execute datacenter management operations remotely | |
US11115489B2 (en) | Cross-domain brokering protocol cloud proxy | |
CN107105033B (zh) | 云应用访问方法、云代理服务器及云应用访问系统 | |
WO2016173199A1 (zh) | 一种移动应用单点登录方法及装置 | |
CN106936633B (zh) | 一种应用安装包制作的方法及服务器 | |
US20110292942A1 (en) | Router, information processing device and program | |
CN109768965A (zh) | 一种服务器的登录方法、设备及存储装置 | |
CN109067789A (zh) | 基于Linux系统的Web漏洞扫描方法、系统 | |
US20230409456A1 (en) | Test controller securely controlling a test platform to run test applications | |
CN104158802A (zh) | 一种平台授权方法、平台服务端及应用客户端和系统 | |
CN104702624A (zh) | 基于CloudStack平台虚拟机登录方法及系统 | |
CN108418799A (zh) | 长连接的建立方法及系统 | |
CN111224952A (zh) | 用于定向流量的网络资源获取方法、装置及存储介质 | |
US10291718B2 (en) | Method and apparatus for implementing communication from web page to client | |
WO2015184878A1 (zh) | 移动应用统一登录处理方法及装置 | |
CN105791249A (zh) | 一种第三方应用处理方法、装置以及系统 | |
US11722481B2 (en) | Multiple identity provider authentication system | |
CN105518693B (zh) | 一种安全防护方法,及装置 | |
CN106559223B (zh) | 应用程序签名方法及装置 | |
CN105553775B (zh) | 一种测试系统中信息的获取方法、装置及测试系统 | |
JP2022506847A (ja) | 仮想デスクトップのための自動キーボードマッピング | |
CN111314355B (zh) | 一种vpn服务器的认证方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |