本发明涉及xx,尤其涉及一种基于cgi实现的容器操作宿主机资源的方法。
背景技术:
1、目前,容器技术被广泛应用于云计算和微服务架构中,容器可以实现应用的隔离运行和轻量级虚拟化。然而,容器本身是不具备操作宿主机资源的功能,当容器需要访问宿主机的文件系统、进程信息等资源时会受到限制。
2、为了解决上述问题,现有技术主要有两种方案,一种方案是使用docker api,docker提供了一个restful api,可用于远程管理docker容器,通过在容器内安装docker客户端,并通过api访问宿主机的docker守护进程,如图1所示。其优点是基于docker现有组件与技术,无需接入其他技术组件,安装部署简单。其缺点是仅可实现宿主机对容器进行相关功能与资源操作,其他的资源访问操作无法实现,需要暴漏宿主机的docker守护进程端口,存在一定的安全隐患。
3、另一种方案是通过ssh连接到宿主机,以在容器内安装ssh客户端,并使用ssh连接到宿主机,需要提供宿主机的ip地址和ssh登录使用的账号、密码。其优点是可执行自定义脚本内容,功能扩展性强,实现方式简单,容易落地,如图2所示。其缺点是需要将服务器的ssh账号、密码配置到文件或写到脚本文件中,存在一定的安全隐患,不支持restful api方式访问。
4、由于现有技术方案在灵活性、可扩展性、易于使用、restulapi支持等方面存在不足,无法很好的满足实际使用时的需求。为此,本申请人经过有益的探索和研究,找到了解决上述问题的方法,下面将要介绍的技术方案便是在这种背景下产生的。
技术实现思路
1、本发明所要解决的技术问题在于:针对现有技术的不足而提供一种可靠性高、兼容性好、安装部署简单、维护成本低、易于扩展、灵活性高的基于cgi实现的容器操作宿主机资源的方法。
2、本发明所要解决的技术问题可以采用如下技术方案来实现:
3、一种基于cgi实现的容器操作宿主机资源的方法,包括以下步骤:
4、步骤s10,在宿主机安装fcgiwrap服务,并在宿主机启动fcgiwrap应用程序,并将其绑定到一个本地套接字fcgiwrap.socket上;
5、步骤s20,在宿主机创建cgi目录,并在cgi目录下编写dispacher.sh功能分发脚本,该脚本内容为接收ngxin转发的请求参数并完成解析,再根据参数调用对应的功能脚本;同时,在/cgi目录下编写要实现宿主机资源操作的功能脚本文件;然后,赋予以上创建脚本的执行权限;
6、步骤s30,容器启动nginx,并映射fcgiwrap.socket文件;
7、步骤s40,进入容器,修改容器配置,退出容器并重启;
8、步骤s50,打开浏览器,输入nginx访问地址,开始访问宿主机资源;
9、步骤s60,nginx接收到请求,利用factcgi模块根据规则解析请求中的相关参数及获取nginx自身提供的变量;
10、步骤s70,nginx根据location配置规则携带cgi相关参数并将请求转发到fcgiwrap.socket,发起对宿主机fcgiwrap服务的调用;
11、步骤s80,宿主机fcgiwrap接收到请求参数执行本地脚本dispacher.sh,dispacher.sh中解析请求参数获取script及method参数,并根据script及method调用具体的功能脚本,并将请求功能函数的参数传入,功能脚本函数执行,并返回结果
12、步骤s90,nginx收到结果返回给浏览器,浏览器展现访问结果。
13、由于采用了如上技术方案,本发明的有益效果在于:
14、1.发明所采用的nginx、fastcgi、fcgiwrap技术成熟稳定,方案整体可靠性高,支持restfulapi方式访问,兼容性好,易于集成与调用,安装部署简单,维护成本低
15、2.本发明在功能增加或修改时无需重启任何服务,即改即用;
16、3.本发明在功能增加或修改时,只需增加或调整功能脚本,访问方式、部署服务无需进行任何调整,易于扩展,灵活性高。
1.一种基于cgi实现的容器操作宿主机资源的方法,其特征在于,包括以下步骤: