CN107368339B - 容器入口程序运行方法、系统、设备及存储介质 - Google Patents

容器入口程序运行方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN107368339B
CN107368339B CN201710613154.1A CN201710613154A CN107368339B CN 107368339 B CN107368339 B CN 107368339B CN 201710613154 A CN201710613154 A CN 201710613154A CN 107368339 B CN107368339 B CN 107368339B
Authority
CN
China
Prior art keywords
program
container
waiting
information
response
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
Application number
CN201710613154.1A
Other languages
English (en)
Other versions
CN107368339A (zh
Inventor
陈宇量
吉志龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Ctrip Business Co Ltd
Original Assignee
Shanghai Ctrip Business Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Ctrip Business Co Ltd filed Critical Shanghai Ctrip Business Co Ltd
Priority to CN201710613154.1A priority Critical patent/CN107368339B/zh
Publication of CN107368339A publication Critical patent/CN107368339A/zh
Application granted granted Critical
Publication of CN107368339B publication Critical patent/CN107368339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种容器入口程序运行方法、系统、设备及存储介质,该方法包括设定容器的入口路径为一预设等待路径;启动容器;等待程序向一响应程序发送容器配置请求;响应程序获取容器的启动配置信息和入口信息;响应程序根据启动配置信息对容器进行资源配置,并于资源配置完成后将入口信息返回至等待程序;等待程序根据入口信息调用并运行容器的入口程序。本发明在用户不感知且对容器内部程序无修改的情况下,解决了现有技术中在依赖条件未满足时运行入口程序出错的问题;由响应程序进行资源配置,由等待程序设定资源配置完成后,调用并运行入口程序,使得容器在运行入口程序之前等待特定的资源配置,从而在满足依赖条件之后再运行入口程序。

Description

容器入口程序运行方法、系统、设备及存储介质
技术领域
本发明涉及云平台容器技术领域,尤其涉及一种使得入口程序在满足依赖条件之后再运行的容器入口程序运行方法、系统、设备及存储介质。
背景技术
当前,以Docker为代表的容器技术带来了整个基础系统的技术革新,改变了开发、测试、交付和运行的流程和方式。一台物理机或者虚拟机上可以运行多个容器,容器之间文件系统、网络等资源互相隔离,该物理机和虚拟机也即宿主机。该技术使得应用以容器为单位进行调度、运行和扩缩容,调度和扩缩容甚至可以动态进行,与传统的基于物理机和虚拟机的方式相比,周期大大缩短。
在容器应用过程中,启动容器之后,其入口程序会立刻运行。然而,在真实使用场景中,常常遇到容器的入口程序的正确运行依赖于某些外部资源就绪的情况。例如,容器的入口程序需要访问某项网络服务,而容器的网络配置需要配置外部的资源,如配置交换机端口等等。如果容器启动后,立即运行入口程序,由于此时网络配置还没有完成,直接运行入口程序就会出错。
发明内容
针对现有技术中的问题,本发明的目的在于提供一种容器入口程序运行方法、系统、设备及存储介质,实现在用户不感知且对容器内部程序无修改的情况下,使得容器在运行入口程序之前等待特定的资源配置,从而在满足依赖条件之后再运行入口程序。
本发明实施例提供一种容器入口程序运行方法,所述方法包括如下步骤:
设定容器的入口路径为一预设等待路径;
启动所述容器,读取所述预设等待路径处预存的等待程序;
将所述等待程序挂载至所述容器并运行所述等待程序;
所述等待程序向一响应程序发送容器配置请求,所述容器配置请求包括所述容器的识别信息;
所述响应程序根据所述容器的识别信息从宿主机获取所述容器的启动配置信息,并从镜像仓库中获取所述容器的入口信息;
所述响应程序根据所述启动配置信息对所述容器进行资源配置,并于资源配置完成后将所述入口信息返回至所述等待程序;
所述等待程序根据所述入口信息调用并运行容器的入口程序。
可选地,所述容器为docker容器,所述响应程序根据所述容器的识别信息获取所述容器的启动配置信息,并从镜像仓库中获取所述容器的入口信息,包括如下步骤:
所述响应程序根据所述容器的识别信息从宿主机获取所述容器的启动配置信息和镜像识别码;
所述响应程序根据所述镜像识别码从镜像仓库中获取对应的镜像文件,并提取所述镜像文件中的入口信息。
可选地,在docker run命令中将容器的入口路径设定为所述预设等待路径。
可选地,还包括如下步骤:
在docker run命令中增加volume参数,将宿主机的进程通信文件挂载到所述容器中。
可选地,所述响应程序位于所述容器外部,所述等待程序和所述响应程序基于所述进程通信文件中的进程通信协议进行通信。
可选地,所述进程通信协议为Unix socket协议。
可选地,所述等待程序根据所述入口信息调用并运行容器的入口程序,包括如下步骤:
所述等待程序从所述入口信息中提取出入口程序路径和入口程序参数;
所述等待程序根据所述入口程序路径调用所述入口程序;
采用docker exec命令根据所述入口程序参数运行所述入口程序。
可选地,还包括如下步骤:
所述响应程序未找到所述容器的启动配置信息和镜像识别码时,将容器出错信息返回至所述等待程序;
停止运行所述等待程序。
可选地,还包括如下步骤:
所述等待程序在发送所述容器配置请求后,超过预定时间仍未接收到所述入口信息时,判断是否重新发送容器配置请求;
如果是,则所述等待程序重新向所述响应程序发送所述容器配置请求;
如果否,则退出运行所述等待程序。
可选地,还包括如下步骤:
所述响应程序运行出现内部错误时,将所述入口信息返回至所述等待程序;
判断是否运行入口程序;
如果是,则所述等待程序根据所述入口信息调用并运行容器的入口程序;
如果否,则退出运行所述等待程序。
可选地,所述资源配置包括网络配置,所述网络配置包括网络地址配置、交换机端口配置和路由端口配置中的至少一种。
可选地,所述资源配置包括文件解密,所述响应程序根据所述启动配置信息调用文件解密服务对待处理的加密文件进行解密。
可选地,所述响应程序基于http服务实现,所述容器配置请求为http请求,所述等待程序通过POST方式向所述响应程序发送所述容器配置请求。
可选地,所述等待程序基于Go语言建立。
本发明实施例还提供一种容器入口程序运行系统,用于实现所述的容器入口程序运行方法,所述系统包括:
等待模块,所述容器的入口路径为所述等待模块所处的路径,所述等待模块用于当所述容器启动时,发送容器配置请求,所述容器配置请求包括所述容器的识别信息;并于接收到入口信息后,根据所述入口信息调用并运行容器的入口程序;
响应模块,用于接收所述容器配置请求,根据所述容器的识别信息获取所述容器的启动配置信息和入口信息;根据所述启动配置信息对所述容器进行资源配置,并于资源配置完成后将所述入口信息返回至所述等待模块。
可选地,所述等待模块挂载于所述容器中,所述响应模块位于所述容器的外部,所述等待模块和所述响应模块通过进程通信协议进行通信。
本发明实施例还提供一种容器入口程序运行设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行所述的容器入口程序运行方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述的容器入口程序运行方法的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
本发明所提供的容器入口程序运行方法、系统、平台及存储介质具有下列优点:
本发明实现了在用户不感知且对容器内部程序无修改的情况下,解决了现有技术中在依赖条件未满足时运行入口程序出错的问题;增加挂载在容器内部的等待程序和位于容器外部的响应程序,由响应程序进行资源配置,由等待程序设定资源配置完成后,调用并运行入口程序,使得容器在运行入口程序之前等待特定的资源配置,从而在满足依赖条件之后再运行入口程序。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是本发明一实施例的容器入口程序运行方法的流程图;
图2是本发明一实施例的读取并运行等待程序的流程图;
图3是本发明一实施例的获取述容器的启动配置信息和入口信息的流程图;
图4是本发明一实施例的调用并运行容器的入口程序的流程图;
图5是本发明一实施例的容器入口程序运行系统的结构示意图;
图6是本发明一实施例的容器入口程序运行系统的工作示意图;
图7是本发明一实施例的容器入口程序运行设备的结构示意图;
图8是本发明一实施例的计算机可读存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
如图1所示,所述容器入口程序运行方法包括如下步骤:
S100:设定容器的入口路径为一预设等待路径;
S200:启动所述容器,读取并运行所述预设等待路径处预存的等待程序;即预设等待路径为等待程序所对应的路径,这样在启动容器时,容器就不会直接运行入口程序,而是运行入口路径处的等待程序;
S300:所述等待程序向一响应程序发送容器配置请求,所述容器配置请求包括所述容器的识别信息;此处容器的识别信息可以是预先设定的容器识别码,例如container-id参数,该container-id参数会对应相应的启动配置信息和入口信息;
S400:所述响应程序根据所述容器的识别信息获取所述容器的启动配置信息和入口信息;
S500:所述响应程序根据所述启动配置信息对所述容器进行资源配置,并于资源配置完成后将所述入口信息返回至所述等待程序;
此处,所述资源配置可以包括网络配置或其他外部资源的配置,所述网络配置可以包括网络地址配置、交换机端口配置和路由端口配置中的至少一种。
另外,所述资源配置还可以包括文件解密,所述响应程序根据所述启动配置信息调用文件解密服务对待处理的加密文件进行解密。在容器中运行应用的时候往往需要一些配置文件,配置文件里包含数据库连接串、用户名密码之类的信息,如果直接明文保存在镜像里会有安全风险,因此需要加密存储。此处,加解密的工作可以由各个平台提供的加解密服务来完成。在应用运行的时候,这些加密过的文件要先解密,也就是说,调用解密服务完成后才能正确的启动应用。因此,在这种情况下,运行入口程序之前,需要调用文件解密服务对设定待处理的加密文件进行解密之后,入口程序才能正常运行。
S600:所述等待程序根据所述入口信息调用并运行容器的入口程序。
现有技术中的容器启动时,由于容器的入口路径往往对应的就是入口程序的路径,因此容器启动时,会立即运行入口程序。与此相对应的,本发明实施例的容器入口程序运行方法,通过增加一个等待程序和一个响应程序,将容器的入口路径修改为等待程序对应的路径,在启动容器时,会首先运行等待程序,等待程序不会马上进入入口程序,而是向响应程序发送容器的识别信息,由响应程序根据识别信息获取到容器对应的启动配置信息和入口信息后,进行资源配置,而等待程序会在资源配置完成且接收到入口信息后,调用并运行入口程序,使得容器在运行入口程序之前等待特定的资源配置,从而在满足依赖条件之后再运行入口程序。因此解决了现有技术中在依赖条件未满足时运行入口程序出错的问题。
可以理解的是,此处步骤的编号仅为区分各个步骤,而非表示步骤之间的顺序关系。在实际应用中,将各个步骤根据需要进行调整也是可以的,均属于本发明的保护范围之内。
如图2所示,所述读取并运行所述预设等待路径处预存的等待程序,包括如下步骤:
S201:读取所述预设等待路径处预存的等待程序;
S202:将所述等待程序挂载至所述容器;
S203:运行所述等待程序。
即等待程序运行时,是在容器内部运行的。而与此对应的,所述响应程序优选位于所述容器的外部,和具体的资源相配合。所述等待程序和所述响应程序基于所述进程通信文件中的进程通信协议进行通信。进一步地,所述进程通信协议为Unix socket协议。Unixsocket协议是利用了Socket接口来实现本地进程通过Socket来实现通信的协议。
对于等待程序,由于它通过挂载的方式运行在容器内部,应当满足两个条件:尽可能简单,依赖尽可能少。基于这两点考虑,所述等待程序优选基于Go语言建立。最终的二进制可执行包运行时仅依赖于libc甚至可以不依赖libc。Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,可以在不损失应用程序性能的情况下降低代码的复杂性,而且更加安全、支持并行进程。libc是Linux下的ANSI C的函数库。此处Go语言仅为示例,在实际应用中,采用其他语言实现等待程序也是可以的,均属于本发明的保护范围之内。
所述响应程序可选基于http服务实现,可以根据业务需求采用任何适用的语言实现。所述容器配置请求为http请求,所述等待程序通过POST方式向所述响应程序发送所述容器配置请求。
进一步地,所述容器可选为docker容器,docker容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
如图3所示,所述响应程序根据所述容器的识别信息获取所述容器的启动配置信息和入口信息,包括如下步骤:
S401:所述响应程序根据所述容器的识别信息从宿主机获取所述容器的启动配置信息和镜像识别码;例如,在获取到容器配置请求中的container-id参数时,通过dockerinfo命令去查询这个container-id,其中的查询结果就包含了容器的启动配置信息和镜像识别码。
S402:所述响应程序根据所述镜像识别码从镜像仓库中获取对应的镜像文件,并提取所述镜像文件中的入口信息。此处镜像文件指的是预先设定好,并且可以加载到这个容器的软件。
宿主机中存储着各个容器所对应的启动配置信息和镜像识别码,根据所述容器的识别信息即可以查找到对应的数据。而镜像仓库可以是网络的镜像仓库,也可以是本地存储的镜像仓库,其中存储着多个镜像文件,每个镜像文件与一镜像识别码相对应,因此,获取到容器对应的镜像识别码后,即可以获取对应的镜像文件。
此处仅为一种优选的实施方式,在实际应用中,通过其他方式获取启动配置信息或获取容器的入口信息均是可以的,均属于本发明的保护范围之内。
可选地,在docker run命令中将容器的入口路径设定为所述预设等待路径。即在运行容器的命令docker run加上一entrypoint=【等待程序路径】参数的方式可以强制修改容器的入口路径。这样,就可以把entrypoint对应的入口路径从入口程序的路径修改为等待程序的路径。
如图2所示,所述读取并运行所述预设等待路径处预存的等待程序,还可以包括如下步骤:
S204:在docker run命令中增加volume参数,将宿主机的进程通信文件挂载到所述容器中。
例如,在运行容器的命令中加上:docker run-volume=[主机socket文件]:[容器socket文件]参数的方式,可以将宿主机上的Unix socket文件挂载到容器里。可以理解的是,此处步骤S204并不限于在步骤S203运行等待程序之后执行,也可以在步骤S202中挂载等待程序时同时执行,或采用其他顺序,均属于本发明的保护范围之内。即此处步骤的编号仅用于区分,而不表示各个步骤之间的顺序。
如图4所示,进一步地,所述等待程序根据所述入口信息调用并运行容器的入口程序,可以包括如下步骤:
S601:所述等待程序从所述入口信息中提取出入口程序路径entrypoint和入口程序参数command;
S602:所述等待程序根据所述入口程序路径调用所述入口程序;
S603:采用docker exec命令根据所述入口程序参数运行所述入口程序。
此处,entrypoint指的即为可执行入口程序的路径,command指的即为入口程序执行时所需的参数。使用docker exec命令时,采用exec[command],可以在一个正在运行的容器中执行所需要的指令command。
所述等待程序通过POST方式向响应程序发送请求时,路径为“/dwait/<container-id>”。响应程序通过status code返回执行状态,每个status code对应的语义,以及等待程序应该对应处理的方式为:
(1)200:执行成功,等待程序继续执行容器中的其他进程,例如调用并运行入口程序;
(2)404:容器未找到,即所述响应程序未找到所述容器的启动配置信息和镜像识别码,这种情况下,可能是等待模块出现错误,或者在接收到容器配置请求时,容器已被删除,在该种情况下,响应程序将容器出错信息返回至所述等待程序;然后停止运行所述等待程序,exit code可设为404。
(3)500:所述响应程序运行出现内部错误时,返回等待程序的数据仍应该包括入口信息;根据业务需求可以判断是否运行入口程序;如果是,则所述等待程序根据所述入口信息调用并运行容器的入口程序;如果否,则退出运行所述等待程序,exit code可设为500。
(4)timeout:所述等待程序在发送所述容器配置请求后,超过预定时间仍未接收到所述入口信息时,说明响应程序出现错误,根据业务需求判断是否重新发送容器配置请求;如果是,则所述等待程序重新向所述响应程序发送所述容器配置请求;如果否,则退出运行所述等待程序。
响应程序通过response body返回一个json字符串,解析后得到一个dict集合,此处json指的是JavaScript对象表示法,dict指的是一系列的键值对的集合。其中必要的项包括:
entrypoint:镜像文件内定义的entrypoint,类型为一个list,list中的内容为字符串;
command:运行容器时指定的command参数,类型与entrypoint相同。这两项可以是系统默认的,也可以是根据需求自定义的。
因此,本实施例的容器入口程序运行方法,增设在容器内部运行的等待程序和在容器外部运行的响应程序,通过进程通信协议实现了容器内部与外部的有效沟通,并且容器启动后,首先执行等待程序,而非立即执行入口程序,在响应程序执行完毕必需的资源配置之后,等待程序才会调用入口程序并运行。等待程序在发送了容器配置请求之后,会一直等待响应模块的返回数据,在此之间,不会运行入口程序,并且用户并不会感知此种变化,所能感觉到的是容器启动成功率的增加和告警次数的减少。另外,本发明对于容器内部本身的程序并没有变动,容器的后续执行过程也不会受到任何影响。
另外,在实际应用中,还存在一种可能,即运行入口程序时,无需其他外部资源配置,启动配置信息中显示为无需配置,则响应程序在查找到启动配置信息后,不执行容器的资源配置,而是直接将入口程序路径和入口程序参数返回给等待模块,则等待模块可以直接调用入口程序。该种应用方式也属于本发明的保护范围之内。
另外,本发明的容器入口程序运行方法不限于应用于docker容器的启动过程中,其他类型的容器,也可以应用本发明的容器入口程序运行方法,均属于本发明的保护范围之内。
如图5所示,本发明实施例还提供一种容器入口程序运行系统,用于实现所述的容器入口程序运行方法,所述系统包括:
等待模块200,容器100的入口路径为所述等待模块所处的路径,所述等待模块200用于当所述容器100启动时,发送容器配置请求,所述容器配置请求包括所述容器的识别信息;并于接收到入口信息后,根据所述入口信息调用并运行容器的入口程序;
响应模块300,用于接收所述容器配置请求,根据所述容器的识别信息获取所述容器的启动配置信息和入口信息;根据所述启动配置信息对所述容器100进行资源配置,并于资源配置完成后将所述入口信息返回至所述等待模块200。
可选地,所述等待模块200挂载于所述容器100中,所述响应模块300位于所述容器100的外部,所述等待模块200和所述响应模块300通过进程通信协议进行通信,并且进一步地通过Unix socket协议通信。
如图6所示,为本发明一实施例的容器入口程序运行系统的工作流程图。下面以图中各个标号来具体说明各个步骤:
a、设定容器100的入口路径为所述等待模块200处的路径,启动容器100,等待模块200被调用,发送容器配置请求至响应模块300;
b、响应模块300接收到容器配置请求后,提取出请求中容器100的识别信息,根据识别信息在宿主机中查找启动配置信息和镜像识别码;
c、响应模块300根据启动配置信息进行容器100的资源配置;
d、响应模块300根据镜像识别码获取镜像文件,提取镜像文件中的入口信息,在资源配置完成后,将入口信息返回至等待模块200;
e、等待模块200在收到入口信息并确定资源配置完成后,调用入口程序并运行入口程序。
此处仅为一种优选的实施方式,在实际应用中,执行方式不限于此,各个步骤之间的顺序也可以根据需要进行调换,例如响应模块300进行资源配置和获取镜像文件之间的顺序即可以根据需要进行调换等等,均属于本发明的保护范围之内。
本发明实施例的容器入口程序运行系统,增设在容器100内部运行的等待模块200和在容器100外部运行的响应模块300,等待模块200在发送了容器配置请求后,会一直等待响应模块返回的数据,在此之间,不会运行入口程序,并且用户并不会感知此种变化。另外,本发明对于容器100内部本身的程序并没有变动,容器100的后续执行过程也不会受到任何影响。
本发明实施例还提供一种容器入口程序运行设备,包括处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行所述的容器入口程序运行方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
下面参照图7来描述根据本发明的这种实施方式的电子设备600。图7显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述容器入口程序运行方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。
因此,本实施例的容器入口程序运行设备,增设等待程序和响应程序,不会对容器内部程序有变动,并且用户不会感知到入口路径变更所带来的变化,所感知到的是容器启动成功率的增加和告警次数的减少;并且容器启动后,首先执行等待程序,而非立即执行入口程序,在响应程序执行完毕必需的资源配置之后,等待程序才会调用入口程序并运行,从而实现了在满足依赖条件后再执行入口程序。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述的容器入口程序运行方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述容器入口程序运行方法部分中描述的根据本发明各种示例性实施方式的步骤。
因此,本实施例的计算机可读存储介质,增设等待程序和响应程序,不会对容器内部程序有变动,并且用户不会感知到入口路径变更所带来的变化,所感知到的是容器启动成功率的增加和告警次数的减少;并且容器启动后,首先执行等待程序,而非立即执行入口程序,在响应程序执行完毕必需的资源配置之后,等待程序才会调用入口程序并运行,从而实现了在满足依赖条件后再执行入口程序。
参考图8所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本发明所提供的容器入口程序运行方法、系统、设备及存储介质具有下列优点:
本发明实现了在用户不感知且对容器内部程序无修改的情况下,解决了现有技术中在依赖条件未满足时运行入口程序出错的问题;增加挂载在容器内部的等待程序和位于容器外部的响应程序,由响应程序进行资源配置,由等待程序设定资源配置完成后,调用并运行入口程序,使得容器在运行入口程序之前等待特定的资源配置,从而在满足依赖条件之后再运行入口程序。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (18)

1.一种容器入口程序运行方法,其特征在于,包括如下步骤:
设定容器的入口路径为一预设等待路径;
启动所述容器,读取所述预设等待路径处预存的等待程序;
将所述等待程序挂载至所述容器并运行所述等待程序;
所述等待程序向一响应程序发送容器配置请求,所述容器配置请求包括所述容器的识别信息;
所述响应程序根据所述容器的识别信息从宿主机获取所述容器的启动配置信息,并从镜像仓库中获取所述容器的入口信息;
所述响应程序根据所述启动配置信息对所述容器进行资源配置,并于资源配置完成后将所述入口信息返回至所述等待程序;
所述等待程序根据所述入口信息调用并运行容器的入口程序。
2.根据权利要求1所述的容器入口程序运行方法,其特征在于,所述容器为docker容器,所述响应程序根据所述容器的识别信息获取所述容器的启动配置信息,并从镜像仓库中获取所述容器的入口信息,包括如下步骤:
所述响应程序根据所述容器的识别信息从宿主机获取所述容器的启动配置信息和镜像识别码;
所述响应程序根据所述镜像识别码从镜像仓库中获取对应的镜像文件,并提取所述镜像文件中的入口信息。
3.根据权利要求2所述的容器入口程序运行方法,其特征在于,在docker run命令中将容器的入口路径设定为所述预设等待路径。
4.根据权利要求2所述的容器入口程序运行方法,其特征在于,还包括如下步骤:
在docker run命令中增加volume参数,将宿主机的进程通信文件挂载到所述容器中。
5.根据权利要求4所述的容器入口程序运行方法,其特征在于,所述响应程序位于所述容器外部,所述等待程序和所述响应程序基于所述进程通信文件中的进程通信协议进行通信。
6.根据权利要求5所述的容器入口程序运行方法,其特征在于,所述进程通信协议为Unix socket协议。
7.根据权利要求2所述的容器入口程序运行方法,其特征在于,所述等待程序根据所述入口信息调用并运行容器的入口程序,包括如下步骤:
所述等待程序从所述入口信息中提取出入口程序路径和入口程序参数;
所述等待程序根据所述入口程序路径调用所述入口程序;
采用docker exec命令根据所述入口程序参数运行所述入口程序。
8.根据权利要求2所述的容器入口程序运行方法,其特征在于,还包括如下步骤:
所述响应程序未找到所述容器的启动配置信息和镜像识别码时,将容器出错信息返回至所述等待程序;
停止运行所述等待程序。
9.根据权利要求1所述的容器入口程序运行方法,其特征在于,还包括如下步骤:
所述等待程序在发送所述容器配置请求后,超过预定时间仍未接收到所述入口信息时,判断是否重新发送容器配置请求;
如果是,则所述等待程序重新向所述响应程序发送所述容器配置请求;
如果否,则退出运行所述等待程序。
10.根据权利要求1所述的容器入口程序运行方法,其特征在于,还包括如下步骤:
所述响应程序运行出现内部错误时,将所述入口信息返回至所述等待程序;
判断是否运行入口程序;
如果是,则所述等待程序根据所述入口信息调用并运行容器的入口程序;
如果否,则退出运行所述等待程序。
11.根据权利要求1所述的容器入口程序运行方法,其特征在于,所述资源配置包括网络配置,所述网络配置包括网络地址配置、交换机端口配置和路由端口配置中的至少一种。
12.根据权利要求1所述的容器入口程序运行方法,其特征在于,所述资源配置包括文件解密,所述响应程序根据所述启动配置信息调用文件解密服务对待处理的加密文件进行解密。
13.根据权利要求1所述的容器入口程序运行方法,其特征在于,所述响应程序基于http服务实现,所述容器配置请求为http请求,所述等待程序通过POST方式向所述响应程序发送所述容器配置请求。
14.根据权利要求1所述的容器入口程序运行方法,其特征在于,所述等待程序基于Go语言建立。
15.一种容器入口程序运行系统,用于实现权利要求1至14中任一项所述的容器入口程序运行方法,其特征在于,所述系统包括:
等待模块,所述容器的入口路径为所述等待模块所处的路径,所述等待模块用于当所述容器启动时,发送容器配置请求,所述容器配置请求包括所述容器的识别信息;并于接收到入口信息后,根据所述入口信息调用并运行容器的入口程序;
响应模块,用于接收所述容器配置请求,根据所述容器的识别信息获取所述容器的启动配置信息和入口信息;根据所述启动配置信息对所述容器进行资源配置,并于资源配置完成后将所述入口信息返回至所述等待模块。
16.根据权利要求15所述的容器入口程序运行系统,其特征在于,所述等待模块挂载于所述容器中,所述响应模块位于所述容器的外部,所述等待模块和所述响应模块通过进程通信协议进行通信。
17.一种容器入口程序运行设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至14中任一项所述的容器入口程序运行方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至14中任一项所述的容器入口程序运行方法的步骤。
CN201710613154.1A 2017-07-25 2017-07-25 容器入口程序运行方法、系统、设备及存储介质 Active CN107368339B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710613154.1A CN107368339B (zh) 2017-07-25 2017-07-25 容器入口程序运行方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710613154.1A CN107368339B (zh) 2017-07-25 2017-07-25 容器入口程序运行方法、系统、设备及存储介质

Publications (2)

Publication Number Publication Date
CN107368339A CN107368339A (zh) 2017-11-21
CN107368339B true CN107368339B (zh) 2020-06-12

Family

ID=60308508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710613154.1A Active CN107368339B (zh) 2017-07-25 2017-07-25 容器入口程序运行方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN107368339B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109039765B (zh) * 2018-08-28 2022-02-25 新华三技术有限公司 网络配置方法及装置
CN111339529B (zh) * 2020-03-13 2022-09-30 杭州指令集智能科技有限公司 低代码的业务编排构件运行的管理系统、方法及计算设备
CN112052067A (zh) * 2020-07-23 2020-12-08 咪咕文化科技有限公司 虚拟化容器启动和信息维护方法、电子设备和存储介质
CN114721784B (zh) * 2022-05-19 2022-08-30 龙芯中科技术股份有限公司 应用运行方法、装置、电子设备及可读介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104601580A (zh) * 2015-01-20 2015-05-06 浪潮电子信息产业股份有限公司 一种基于强制访问控制的策略容器设计方法
CN105069353A (zh) * 2015-08-11 2015-11-18 武汉大学 一种基于Docker的可信容器安全加固方法
CN105630488A (zh) * 2015-12-18 2016-06-01 上海爱数信息技术股份有限公司 一种基于docker容器技术的持续集成实现方法
CN105978781A (zh) * 2016-06-28 2016-09-28 浪潮电子信息产业股份有限公司 建立Docker容器的网络连接的方法、系统以及客户端
CN106559717A (zh) * 2015-09-25 2017-04-05 中兴通讯股份有限公司 Jslee容器系统,处理方法及网络融合的系统
WO2017067016A1 (en) * 2015-10-23 2017-04-27 Huawei Technologies Co., Ltd. Extension of resource constraints for service-defined containers

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495356B2 (en) * 2010-12-31 2013-07-23 International Business Machines Corporation System for securing virtual machine disks on a remote shared storage subsystem
WO2015161483A1 (zh) * 2014-04-24 2015-10-29 华为技术有限公司 操作系统建立方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104601580A (zh) * 2015-01-20 2015-05-06 浪潮电子信息产业股份有限公司 一种基于强制访问控制的策略容器设计方法
CN105069353A (zh) * 2015-08-11 2015-11-18 武汉大学 一种基于Docker的可信容器安全加固方法
CN106559717A (zh) * 2015-09-25 2017-04-05 中兴通讯股份有限公司 Jslee容器系统,处理方法及网络融合的系统
WO2017067016A1 (en) * 2015-10-23 2017-04-27 Huawei Technologies Co., Ltd. Extension of resource constraints for service-defined containers
CN105630488A (zh) * 2015-12-18 2016-06-01 上海爱数信息技术股份有限公司 一种基于docker容器技术的持续集成实现方法
CN105978781A (zh) * 2016-06-28 2016-09-28 浪潮电子信息产业股份有限公司 建立Docker容器的网络连接的方法、系统以及客户端

Also Published As

Publication number Publication date
CN107368339A (zh) 2017-11-21

Similar Documents

Publication Publication Date Title
US10871953B2 (en) Application update method and apparatus
US11461125B2 (en) Methods and apparatus to publish internal commands as an application programming interface in a cloud infrastructure
US11237844B2 (en) Method and apparatus for loading kernel module
CN107203419B (zh) 应用程序中的模块间调用方法、装置及系统
EP2798494B1 (en) Virtual channel for embedded process communication
CN107368339B (zh) 容器入口程序运行方法、系统、设备及存储介质
US8683462B2 (en) Handling calls to native code in a managed code environment
US10574724B2 (en) Automatic discovery of management nodes and generation of CLI using HA module
US10614208B1 (en) Management of login information affected by a data breach
US9922181B2 (en) Security model for network information service
CN113961919B (zh) 恶意软件检测方法和装置
US11531526B1 (en) Creating portable serverless applications
CN112189187A (zh) 统一平台的可扩展性
US10198279B2 (en) Thread synchronization for platform neutrality
KR102352265B1 (ko) 웹 애플리케이션 개발 플랫폼 제공 시스템 및 방법
US11494184B1 (en) Creation of transportability container files for serverless applications
US8738755B2 (en) Providing external access to service versions via a bundle framework
US8074205B2 (en) Binary verification service
CN112491940B (zh) 代理服务器的请求转发方法及装置、存储介质及电子设备
US20150195376A1 (en) Machine-Specific Instruction Set Translation
US11513833B1 (en) Event listener interface for container-based execution of serverless functions
US8739187B2 (en) Legacy application integration within a bundle framework
CN115904361B (zh) 应用于微服务的数据处理方法、装置、设备和介质
CN116266112A (zh) 一种文件处理方法、装置、设备及计算机可读存储介质
CN115840617A (zh) 一种调试方法、系统及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant