基于容器技术的应用部署方法和系统与流程

文档序号:12270972阅读:495来源:国知局
基于容器技术的应用部署方法和系统与流程

本发明涉及互联网技术领域,尤其涉及一种基于容器技术的应用部署方法和系统。



背景技术:

Docker是一个开源的应用容器引擎,提供了一种应用程序快速自动化部署的解决方案;利用Docker可以使用应用所在的镜像快速创建并启动容器,容器创建并运行后,应用即部署完成。容器技术通过隔离进程和资源,可以实现轻量级虚拟化。

现有技术中,在一台物理机上可以部署多个容器,每个容器之间相互隔离,每个容器中可以具有多个应用,采用网桥模式。每个容器有自己隔离的网络协议(Internet Protocol,简称IP)地址和各自的端口port0;物理机的IP地址为ip1,物理机上具有与各容器的端口一一对应的端口port1;各容器通过端口映射的方法将对外提供的端口port0,映射到容器所在物理机上的端口port1上。外部程序可以通过ip1:port1访问容器内应用的服务。

然而现有技术中,在网桥模式下,每个容器有自己的独立IP地址,而在容器的应用的运行过程中获取的IP地址和端口是容器内的IP地址,物理机外的应用是无法通过容器的IP地址和端口去访问容器内的应用的,并且容器内的应用无法自动的向服务注册中心去注册和发布服务。



技术实现要素:

本发明提供一种基于容器技术的应用部署方法和系统,用以解决现有技术中容器内的应用无法自动的向服务注册中心去注册和发布服务的问题。

本发明的一方面是提供一种基于容器技术的应用部署方法,包括:

物理机获取容器创建启动命令,其中,所述容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;

所述物理机根据所述容器创建启动命令,创建各容器,以使各容器中生成所述第一-e参数、第二-e参数对应的环境变量;

容器内部署的应用通过容器,以及所述容器创建启动命令中的各参数访问配置中心装置和注册中心装置。

本发明的另一方面是提供一种基于容器技术的应用部署系统,包括:

物理机、配置中心装置和注册中心装置;

其中,所述物理机包括:

获取模块,用于获取容器创建启动命令,其中,所述容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;

创建模块,用于根据所述容器创建启动命令,创建各容器,以使各容器中生成所述第一-e参数、第二-e参数对应的环境变量;

访问模块,用于容器内部署的应用通过容器,以及所述容器创建启动命令中的各参数访问配置中心装置和注册中心装置。

本发明的技术效果是:本实施例通过物理机获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;物理机根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量;容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。从而使用-P参数,可将容器对外暴露端口自动一一映射到物理机上的端口上,而不需要指定与容器的端口对应的物理机的端口,因此不存在端口层面的资源竞争。通过2个-e参数可在容器内创建2个环境变量;并且利用由第一-e参数创建的第一环境变量,容器内应用能够获取对外服务的实际地址,该实际地址为物理机地址+映射后的端口;利用由第二-e参数创建的第二环境变量,容器内应用能够获取配置中心地址。从配置中心,应用获取所有的环境配置信息,包括服务注册中心地址。应用在获取服务注册中心地址后,将各个服务的实际地址注册到服务注册中心,即完成了服务发布。

附图说明

图1为本发明实施例一提供的基于容器技术的应用部署方法的流程图;

图2为本发明实施例二提供的基于容器技术的应用部署方法的流程图;

图3为本发明实施例三提供的基于容器技术的应用部署系统的结构示意图;

图4为本发明实施例四提供的基于容器技术的应用部署系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例一提供的基于容器技术的应用部署方法的流程图,如图1所示,本实施例的方法,包括:

步骤101、物理机获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址。

在本实施例中,具体的,集群管理装置可以生成容器创建启动命令,并将容器创建启动命令发送给选择的物理机上的Docker,其中,容器创建启动命令中包括镜像参数、-P参数、第一-e参数、第二-e参数。

容器创建启动命令中的各参数中,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于指定容器IP地址与物理机IP地址的一一映射关系,第二-e参数用于指定配置中心装置的地址。具体来说,-P参数,用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,从而将各容器中的应用指定的所有端口全部映射到物理机上,映射后的端口由物理机决定,只要不冲突即可。第一-e参数,用于第一-e参数与容器启动的第一环境变量HOST_GET_REALADDRESS相对应,第一环境变量HOST_GET_REALADDRESS与容器启动的端口映射查询地址相对应,容器启动的端口映射查询地址、容器IP地址和物理机IP地址是相对应的,进而第一-e参数用于获取容器IP与端口映射查询地址的映射关系;从而各容器内的应用可以b查询到自己的地址映射,查询功能由集群管理装置提供。第二-e参数,用于指定配置中心装置的地址HOST_CONFIG。物理机根据容器创建启动命令创建各容器。

步骤102、物理机根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量。

在本实施例中,具体的,物理机根据接收到的容器创建启动命令,去创建各容器,通过第一-e参数和第二-e参数,容器能够创建对应的环境变量,从而使得各容器中存储有容器创建启动命令的各参数。

步骤103、容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。

其中,步骤103的具体实现方式为:

容器内应用,依据第二-e参数所指定的配置中心装置的地址,访问配置中心装置,以获取配置中心装置中的各配置项值,其中,配置项值中包括注册中心装置地址;

容器内应用依据注册中心装置地址,访问注册中心装置;

容器内应用将第一-e参数所获取到的容器IP与端口映射查询地址的映射关系,发送给注册中心装置,以使注册中心装置保存映射关系之后,各容器和注册中心装置中的应用通过映射关系进行相互访问。

其中,容器内应用,将第一-e参数所获取到的容器IP与端口映射查询地址的映射关系,发送给注册中心装置,以使注册中心装置保存映射关系之后,各容器和注册中心装置中的应用通过映射关系进行相互访问,包括:

容器内应用根据第一-e参数,确定与第一-e参数对应的容器启动的第一环境变量;

容器内应用确定与第一环境变量对应的容器启动的端口映射查询地址;

容器内部署的应用启动时利用第一环境变量对应的端口映射查询地址和容器ID,查询当前容器的地址、物理机地址与端口的映射关系,其中,映射关系为容器IP地址、物理机IP地址、与端口映射查询地址的一一映射关系;

容器内应用将映射关系发送给注册中心装置,以使注册中心装置保存映射关系之后,各容器和注册中心装置中的应用通过映射关系进行相互访问。

在本实施例中,具体的,物理机创建了各容器之后,各容器启动,此时相当于启动容器内部署的应用。在各容器的应用启动的过程中,各容器内部署的应用,采用容器创建启动命令中的各参数去访问配置中心装置和注册中心装置,从而完成配置项获取与服务注册。

具体来说,物理机内的容器中部署的应用,首先根据第二-e参数所指定的配置中心装置的地址HOST_CONFIG,去访问配置中心装置;由于在配置中心设置有各配置项值,进而容器中部署的应用可以获取配置中心装置中的各配置项值,在配置项值中包括注册中心装置的注册中心装置地址。然后容器中部署的应用,根据配置项值中的注册中心装置地址HOST_REGISTRY,去访问注册中心装置。从而容器内部署的应用可以将第一-e参数获取到的容器IP与端口映射查询地址的映射关系,发送给注册中心装置,去使得各容器和注册中心装置中的应用通过映射关系进行相互访问;具体来说,容器内部署的应用可以根据第一-e参数,确定与第一-e参数对应的容器启动的第一环境变量HOST_GET_REALADDRESS,然后容器内部署的应用确定与第一环境变量HOST_GET_REALADDRESS对应的容器启动的端口映射查询地址;接着容器内部署的应用在启动时,利用第一环境变量对应的端口映射查询地址和容器ID,查询当前容器的地址、物理机地址与端口的映射关系,继而可以确定当前容器的地址、物理机地址与端口的映射关系,容器内的应用可以将映射关系,其中映射关系为为容器IP地址、物理机IP地址、与端口映射查询地址的一一映射关系,发送给注册中心装置,使得注册中心装置可以保存映射关系。进而各容器的应用可以通过容器中保存的映射关系,访问注册中心装置中的应用,且注册中心装置中的应用可以根据注册中心装置中保存的映射关系,访问各容器中的应用,从而容器中的应用可以向注册中心装置注册服务。

本实施例通过物理机获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;物理机根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量;容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。从而使用-P参数,可将容器对外暴露端口自动一一映射到物理机上的端口上,而不需要指定与容器的端口对应的物理机的端口,因此不存在端口层面的资源竞争。通过2个-e参数可在容器内创建2个环境变量;并且利用由第一-e参数创建的第一环境变量,容器内应用能够获取对外服务的实际地址,该实际地址为物理机地址+映射后的端口;利用由第二-e参数创建的第二环境变量,容器内应用能够获取配置中心地址。从配置中心,应用获取所有的环境配置信息,包括服务注册中心地址。应用在获取服务注册中心地址后,将各个服务的实际地址注册到服务注册中心,即完成了服务发布。

图2为本发明实施例二提供的基于容器技术的应用部署方法的流程图,在实施例一的基础上,如图2所示,本实施例的方法,在步骤101之前,还包括:

步骤201、操作台装置接收用户输入的应用部署指令,并将应用部署指令发送给集群管理装置。

在本实施例中,具体的,操作台装置可部署BS结构的WEB服务器,操作人员通过操作台装置启动容器。具体来说,操作台装置接收用户输入的应用部署指令,然后操作台装置将应用部署指令发送给集群管理装置。

步骤202、集群管理装置根据应用部署指令,依据各物理机的资源占用状况和调度策略,选择待部署的物理机。

在本实施例中,具体的,在应用运行集群装置由集群管理装置和若干台应用运行的物理机;集群管理装置根据应用部署指令,依据当前各台物理机的资源占用状况和调度策略,去选择待部署的物理机。同时,集群管理装置中记录各个物理机的地址和各个容器的端口映射,并对外提供查询地址,能够根据一个容器的ID查询到对应容器所在物理机地址和该容器的端口映射信息。

步骤203、集群管理装置生成容器创建启动命令,将容器创建启动命令发送给待部署的物理机。

在本实施例中,具体的,集群管理装置生成容器创建启动命令,并将容器创建启动命令发送给选择出的待部署的物理机。

本实施例通过物理机获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;物理机根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量;容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。从而使用-P参数,可将容器对外暴露端口自动一一映射到物理机上的端口上,而不需要指定与容器的端口对应的物理机的端口,因此不存在端口层面的资源竞争。通过2个-e参数可在容器内创建2个环境变量;并且利用由第一-e参数创建的第一环境变量,容器内应用能够获取对外服务的实际地址,该实际地址为物理机地址+映射后的端口;利用由第二-e参数创建的第二环境变量,容器内应用能够获取配置中心地址。从配置中心,应用获取所有的环境配置信息,包括服务注册中心地址。应用在获取服务注册中心地址后,将各个服务的实际地址注册到服务注册中心,即完成了服务发布。同时,本实施例中,结合配置中心,可以统一管理所有物理机及其中运行的容器,容器在启动后的所有可持久化到操作台装置,用户通过操作台装置可通过集群管理装置统一完成容器的各种操作。

图3为本发明实施例三提供的基于容器技术的应用部署系统的结构示意图,如图3所示,本实施例提供的系统,包括:

物理机31、配置中心装置32和注册中心装置33;

其中,物理机31包括:

获取模块311,用于获取模块,用于获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;

创建模块312,用于根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量;

访问模块313,用于容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。

其中,访问模块313,包括:

第一访问子模块3131,用于容器内应用,依据第二-e参数所指定的配置中心装置的地址,访问配置中心装置,以获取配置中心装置中的各配置项值,其中,配置项值中包括注册中心装置地址;

第二访问子模块3132,用于容器内应用依据注册中心装置地址,访问注册中心装置;

发送子模块3133,用于容器内应用将第一-e参数所获取到的容器IP与端口映射查询地址的映射关系,发送给注册中心装置,以使注册中心装置保存映射关系之后,各容器和注册中心装置中的应用通过映射关系进行相互访问。

发送子模块3133,具体用于:

容器内应用根据第一-e参数,确定与第一-e参数对应的容器启动的第一环境变量;

容器内应用确定与第一环境变量对应的容器启动的端口映射查询地址;

容器内部署的应用启动时利用第一环境变量对应的端口映射查询地址和容器ID,查询当前容器的地址、物理机地址与端口的映射关系,其中,映射关系为容器IP地址、物理机IP地址、与端口映射查询地址的一一映射关系;

容器内应用将映射关系发送给注册中心装置,以使注册中心装置保存映射关系之后,各容器和注册中心装置中的应用通过映射关系进行相互访问。

本实施例的基于容器技术的应用部署系统可执行本发明实施例一提供的基于容器技术的应用部署方法,其实现原理相类似,此处不再赘述。

本实施例通过物理机获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;物理机根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量;容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。从而使用-P参数,可将容器对外暴露端口自动一一映射到物理机上的端口上,而不需要指定与容器的端口对应的物理机的端口,因此不存在端口层面的资源竞争。通过2个-e参数可在容器内创建2个环境变量;并且利用由第一-e参数创建的第一环境变量,容器内应用能够获取对外服务的实际地址,该实际地址为物理机地址+映射后的端口;利用由第二-e参数创建的第二环境变量,容器内应用能够获取配置中心地址。从配置中心,应用获取所有的环境配置信息,包括服务注册中心地址。应用在获取服务注册中心地址后,将各个服务的实际地址注册到服务注册中心,即完成了服务发布。

图4为本发明实施例四提供的基于容器技术的应用部署系统的结构示意图,在实施例三的基础上,如图4所示,本实施例提供的系统,还包括:

操作台装置41和集群管理装置42;

操作台装置41,用于在获取模块311获取容器创建启动命令之前,接收用户输入的应用部署指令,并将应用部署指令发送给集群管理装置42;

集群管理装置42,用于根据应用部署指令,依据各物理机31的资源占用状况和调度策略,选择待部署的物理机31;生成容器创建启动命令,将容器创建启动命令发送给待部署的物理机31。

本实施例的基于容器技术的应用部署系统可执行本发明实施例二提供的基于容器技术的应用部署方法,其实现原理相类似,此处不再赘述。

本实施例通过物理机获取容器创建启动命令,其中,容器创建启动命令包括-P参数、第一-e参数、第二-e参数,-P参数用于将物理机中的各容器的端口自动一一映射到物理机上的端口上,第一-e参数用于获取容器IP与端口映射查询地址的映射关系,第二-e参数用于指定配置中心装置的地址;物理机根据容器创建启动命令,创建各容器,以使各容器中生成第一-e参数、第二-e参数对应的环境变量;容器内部署的应用通过容器,以及容器创建启动命令中的各参数访问配置中心装置和注册中心装置。从而使用-P参数,可将容器对外暴露端口自动一一映射到物理机上的端口上,而不需要指定与容器的端口对应的物理机的端口,因此不存在端口层面的资源竞争。通过2个-e参数可在容器内创建2个环境变量;并且利用由第一-e参数创建的第一环境变量,容器内应用能够获取对外服务的实际地址,该实际地址为物理机地址+映射后的端口;利用由第二-e参数创建的第二环境变量,容器内应用能够获取配置中心地址。从配置中心,应用获取所有的环境配置信息,包括服务注册中心地址。应用在获取服务注册中心地址后,将各个服务的实际地址注册到服务注册中心,即完成了服务发布。同时,本实施例中,结合配置中心,可以统一管理所有物理机及其中运行的容器,容器在启动后的所有可持久化到操作台装置,用户通过操作台装置可通过集群管理装置统一完成容器的各种操作。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1