CN108415795B - 一种容器Dockerfile、容器镜像快速生成方法及系统 - Google Patents
一种容器Dockerfile、容器镜像快速生成方法及系统 Download PDFInfo
- Publication number
- CN108415795B CN108415795B CN201810145672.XA CN201810145672A CN108415795B CN 108415795 B CN108415795 B CN 108415795B CN 201810145672 A CN201810145672 A CN 201810145672A CN 108415795 B CN108415795 B CN 108415795B
- Authority
- CN
- China
- Prior art keywords
- destination application
- file
- item
- container
- sys
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种容器Dockerfile、容器镜像快速生成方法及系统,容器Dockerfile快速生成方法的步骤包括针对待打包的目标应用程序,运行并对目标应用程序追踪执行,记录目标应用程序在运行过程中的操作系统依赖项、组织构建将目标应用程序打包至容器镜像的所需文件列表,根据将目标应用程序打包至容器镜像的所需文件列表生成用于将目标应用程序打包至容器镜像的Dockerfile文件及其容器镜像文件创建目录。本发明能够自动将任意目标应用程序打包进入容器,完成目标应用程序的可执行最小环境闭包的构建,打包出的容器比手工制作的容器更小,比人工打包方式更快、更便捷,不需要操作人员对应用程序的构成有深度了解,任何人都可以轻松的容器化自己想要的特定应用。
Description
技术领域
本发明涉及容器生成和云计算技术,具体涉及一种容器Dockerfile、容器镜像快速生成方法及系统,用于满足已有应用软件向云计算平台迁移的需求。
背景技术
随着“大物移云”(大数据,物联网,移动通讯,云技术)的时代到来,可编程按需定制、集中式统一管理、动态流量监管、自动化部署的新一代云计算环境带来了生产生活和商业模式的根本性改变。越来越多的企业构建了自己的私有云或者采用了第三方提供商的云服务,并将自己的传统业务系统向云平台进行迁移和部署,构建新的商业模式,降低服务和运维成本。容器技术就是当前应对这个需求的一项有效的技术。
容器技术借鉴了标准集装箱的概念。集装箱运输货物,而容器运输软件。每个容器都包含一个软件镜像,也就是容器的“货物”,而且与真正的货物一样,容器里的软件镜像可以进行一些操作。例如,镜像可以被创建、启动、关闭、重启以及销毁。和集装箱一样,容器在执行上述操作时,并不关心容器中到底塞进了什么,它不管里面是 Web 服务器,还是数据库,或者是应用程序服务器什么的。所有容器都按照相同的方式将内容“装载”进去。容器也不关心你要把容器运到何方:你可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,再把容器部署到 Amazon EC2主机的集群中去。像标准集装箱一样,容器方便替换,可以叠加,易于分发,并且尽量通用。使用容器,我们可以快速构建一个应用程序服务器、一个消息总线、一套实用工具、一个持续集成(continuous integration,CI)测试环境或者任意一种应用程序、服务或工具。我们可以在本地构建一个完整的测试环境,也可以为生产或开发快速复制一套复杂的应用程序栈。
容器本身就具有“标准性”和隔离性的特征,非常适合为服务创建组件。容器的一些应用场景如下。
● 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享容器。容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。
● 能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微型服务的部署中尤其实用。
● 用容器创建隔离的环境来进行测试。例如,用Jenkins CI这样的持续集成工具启动一个用于测试的容器。
● 容器可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署、测试。
● 构建一个多用户的平台即服务(PaaS)基础设施。
● 为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学,如Unix shell 的使用、编程语言教学。
● 提供软件即服务(SaaS)应用程序,如Memcached 即服务。
● 高性能、超大规模的宿主机部署。
容器操作系统提供的一种有效地将操作系统资源划分到多个相互的组中的一种技术,以更好地在隔离的组之间平衡有冲突的资源使用需求。通过提供一种创建和进入容器的方式,操作系统让应用程序就像在独立的机器上运行一样,但又能共享很多底层的资源。与虚拟化技术相比,容器是一种轻量级的资源隔离方式,其开销要小得多。
为一个特定应用软件构造和生成一个容器的镜像一般有两个步骤:(1)分析该应用软件的依赖关系,收集该应用所依赖的操作系统、其他软件包以及配置信息;(2)将该应用所依赖的软件包及配置信息连同该应用软件一起,打包进特定的操作系统容器镜像中。在这个过程中,第二步比较简单,可以通过以下两种方法完成:1、手工启动一个包含基础系统的基本镜像的容器实例(比如:ubuntu:16.04、centos:7等),然后手工下载或拷贝该应用所需的数据和可执行程序到容器实例中,再将该容器实例提交成为一个容器镜像;2、使用Dockerfile文件描述构建该特定应用的基本命令步骤,然后使用docker build命令,安装描述的运行步骤,完成镜像的构建。为特定应用软件构造和生成容器镜像真正困难的是第一步,目前开发人员都是通过人工分析的方法来获取应用软件的依赖关系,然后将这些依赖关系写入Dockerfile中。然而,人工分析需要构造人员非常熟悉该特定应用与其他系统软件包的依赖关系,才能步骤清晰的将一个应用搬移到容器中执行。实际生活中,企业内部往往存在大量历史遗留程序,会因为开发人员调动等众多原因,导致几乎无人了解该应用对系统环境的依赖关系,强行移植,需要大量试探该应用对其他系统库等的依赖,从而极大的增加应用容器化的难度。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种容器Dockerfile、容器镜像快速生成方法及系统,本发明通过综合使用目标应用程序执行追踪、进程运行时复杂依赖分析,让目标应用程序在一个受透明监控的环境中完成一次真实执行,然后根据分析目标应用程序真实执行过程中对系统中各个库、数据、其他可执行程序的依赖,为目标应用程序自动组织并产生其容器镜像构建所需的所有文件并自动生成Dockerfile脚本,进而将目标应用程序打包进容器镜像中,能够将现有的已经部署在系统中的目标应用程序打包生成Dockerfile或进一步生成容器镜像,从而实现自动将任意目标应用程序打包进入容器。
为了解决上述技术问题,本发明采用的技术方案为:
一种容器Dockerfile快速生成方法,实施步骤包括:
1)针对待打包的目标应用程序,运行目标应用程序并对目标应用程序追踪执行,记录目标应用程序在运行过程中的操作系统依赖项;
2)根据操作系统依赖项组织构建将目标应用程序打包至容器镜像的所需文件列表;
3)根据将目标应用程序打包至容器镜像的所需文件列表生成用于将目标应用程序打包至容器镜像的Dockerfile文件及其容器镜像文件创建目录。
优选地,步骤1)中运行目标应用程序并对目标应用程序追踪执行具体是指将目标应用程序隔离在一个独立的操作系统进程空间中运行,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控。
优选地,步骤1)的详细步骤包括:
1.1)针对待打包的目标应用程序,将目标应用程序隔离在一个独立的操作系统进程空间中,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控;初始化生成目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行一轮迭代追踪执行;
1.2)收集目标应用程序运行所需要的环境变量及环境变量值,加入目标应用程序在运行过程中的操作系统依赖项中的环境变量依赖项;
1.3)监控目标应用程序运行期间的系统调用,所述系统调用的执行主体包括目标应用程序自身、目标应用程序通过进程创建的系统调用创建的进程、目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用后重新启动的进程,所述系统调用的类型包括涉及文件的系统调用、涉及进程创建的系统调用、本地进程间通信类的系统调用、共享内核对象类的系统调用,且目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用时首先获取调用的进程的启动参数、杀死调用的进程并基于获取的启动参数以程序追踪模式重新启动调用的进程;最终分别记录文件的系统调用对应的文件加入操作系统依赖项中的文件依赖项、涉及进程创建的系统调用创建的进程加入作为操作系统依赖项中的进程依赖项、本地进程间通信类的系统调用和共享内核对象类的系统调用涉及的进程加入操作系统依赖项中的通信进程依赖项;
1.4)判断目标应用程序是否结束运行或者运行时间超过预设的时间阀值,如果目标应用程序是否结束运行或者运行时间超过预设的时间阀值,则跳转执行下一步;
1.5)判断本轮追踪执行得到的操作系统依赖项是否有新项目增加,如果有新的项目增加,则改变目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行下一轮迭代追踪执行,跳转执行步骤1.2);否则,跳转执行步骤2)。
优选地,步骤1.2)中收集目标应用程序运行所需要的环境变量及环境变量值具体是指方法(1)、方法(2)中的至少一种:方法(1)在目标应用程序执行前记录当前可见的环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项;方法(2)在目标应用程序执行过程中对监控getenv标准库函数的函数调用,记录目标应用程序对监控getenv标准库函数的函数调用获得环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项。
优选地,步骤1.3)中文件的系统调用包括:调用号2为的sys_open函数调用、调用号4为的sys_stat函数调用、调用号为6的sys_lstat函数调用、调用号为21的sys_access函数调用、调用号为59的sys_execve函数调用、调用号为127的sys_statfs函数调用、调用号为188的sys_setxattr函数调用、调用号为189的sys_lsetxattr函数调用、调用号为191的sys_getxattr函数调用、调用号为192的sys_lgetxattr函数调用、调用号为195的sys_listxattr函数调用、调用号196为的sys_llistxattr函数调用;步骤1.3)中涉及进程创建的系统调用包括:调用号为56的sys_clone函数调用、调用号为57的sys_fork函数调用、调用号为58的sys_vfork函数调用;步骤1.3)中本地进程间通信类的系统调用包括:调用号22为的sys_pipe函数调用、调用号为293的sys_pipe2函数调用、调用号为62的sys_kill函数调用、调用号为42的sys_connect函数调用、调用号为43的sys_accept函数调用、调用号为299的sys_recvmmsg函数调用、调用号为307的sys_sendmmsg函数调用;步骤1.3)中共享内核对象类的系统调用包括:调用号为30的sys_shmat函数调用、调用号为31的sys_shmctl函数调用、调用号为9的sys_mmap函数调用。
优选地,步骤1)中运行目标应用程序并对目标应用程序追踪执行时,对目标应用程序追踪执行采用的方法为动态二进制翻译、进程调试、动态链接库劫持三种方法中的一种。
优选地,步骤2)的详细步骤包括:
2.1)将所有的操作系统依赖项合并为一个文件;
2.2)针对合并后的文件去除重复项;
2.3)针对合并后的文件去除非依赖项,所述非依赖项包括操作系统依赖项中的文件依赖项中目标应用程序在新的容器镜像环境中执行时会创建新的文件的项目;
2.4)针对合并后的文件中操作系统依赖项中的文件依赖项,去除不需要在目标容器镜像中重建的项目,最终得到将目标应用程序打包至容器镜像的所需文件列表。
优选地,步骤3)的详细步骤包括:
3.1)初始化创建Dockerfile文件及其容器镜像文件创建目录;
3.2)针对将目标应用程序打包至容器镜像的所需文件列表,遍历选择其中的一个依赖项作为当前依赖项;
3.3)判断当前依赖项的类型:如果当前依赖项的类型为环境变量,则在Dockerfile文件中增加一条设置当前依赖项的环境变量的语句;如果当前依赖项的类型为文件,则在容器镜像文件创建目录下创建与当前依赖项的文件的原始目录结构相同的目录结构,并将当前依赖项的文件复制到容器镜像文件创建目录下的相同目录结构中;如果当前依赖项的类型为符号链接,递归遍历符号链接指向的文件直到链接指向最终指向的文件为常规文件,根据符号链接的指向关系在Dockerfile文件中重建完全相同的符号链接结构,并在容器镜像文件创建目录下创建与符号链接最终指向的文件的原始目录结构相同的目录结构,并将符号链接最终指向的文件复制到容器镜像文件创建目录下的相同目录结构中;
3.4)判断将目标应用程序打包至容器镜像的所需文件是否遍历完毕,如果尚未遍历完毕,则遍历选择下一项作为当前项,跳转执行步骤3.3);否则,结束并退出。
本发明还提供一种容器镜像快速生成方法,实施步骤包括:
S1)针对目标应用程序,采用本发明容器Dockerfile快速生成方法生成用于将目标应用程序打包进容器镜像的Dockerfile文件及其容器镜像文件创建目录;
S2)基于已有的基本容器镜像,通过docker build命令将Dockerfile文件及其容器镜像文件创建目录在目标主机上生成容器镜像,从而将目标应用程序打包进容器镜像中。
本发明还提供一种容器镜像快速生成系统,包括计算机系统,所述计算机系统被编程以执行本发明容器Dockerfile快速生成方法的步骤或者容器镜像快速生成方法的步骤。
本发明能够取得下述有益效果:
1、本发明通过综合使用目标应用程序执行追踪、进程运行时复杂依赖分析,让目标应用程序在一个受透明监控的环境中完成一次真实执行,然后根据分析目标应用程序真实执行过程中对系统中各个库、数据、其他可执行程序的依赖,为目标应用程序自动组织并产生其容器镜像构建所需的所有文件并自动生成Dockerfile脚本,进而将目标应用程序打包进容器镜像中,能够将现有的已经部署在系统中的目标应用程序打包生成Dockerfile或进一步生成容器镜像,从而实现自动将任意目标应用程序打包进入容器。
2、由于进程运行时与操作系统、及系统内其他进程交互式的复杂性,这个自动化打包过程,不能简单的通过抽取这个进程所打开的文件名,来完成打包任务。本发明完整、充分地的考虑了进程在系统中的各种可能的交互行为,并通过不断迭代的运行时追踪过程,完成目标应用程序的可执行最小环境闭包的构建,打包出的容器比手工制作的容器更小。
3、本发明实现的应用打包进入容器的自动化方法,比人工打包方式更快、更便捷。
4、本发明不需要操作人员对应用程序的构成有深度了解,任何人都可以轻松的容器化自己想要的特定应用。
附图说明
图1为本发明实施例一方法的基本流程示意图。
图2为本发明实施例一获取操作系统依赖项的详细流程示意图。
具体实施方式
实施例一:
如图1所示,本实施例容器Dockerfile快速生成方法的实施步骤包括:
1)针对待打包的目标应用程序,运行目标应用程序并对目标应用程序追踪执行,记录目标应用程序在运行过程中的操作系统依赖项;
2)根据操作系统依赖项组织构建将目标应用程序打包至容器镜像的所需文件列表;
3)根据将目标应用程序打包至容器镜像的所需文件列表生成用于将目标应用程序打包至容器镜像的Dockerfile文件及其容器镜像文件创建目录。
本实施例中,步骤1)中运行目标应用程序并对目标应用程序追踪执行具体是指将目标应用程序隔离在一个独立的操作系统进程空间中运行,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控。
本实施例中,步骤1)中运行目标应用程序并对目标应用程序追踪执行时,对目标应用程序追踪执行采用的方法为动态二进制翻译、进程调试、动态链接库劫持三种方法中的一种。
如图2所示,本实施例步骤1)的详细步骤包括:
1.1)针对待打包的目标应用程序,将目标应用程序隔离在一个独立的操作系统进程空间中,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控;初始化生成目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行一轮迭代追踪执行;
1.2)收集目标应用程序运行所需要的环境变量及环境变量值,加入目标应用程序在运行过程中的操作系统依赖项中的环境变量依赖项;
1.3)监控目标应用程序运行期间的系统调用,所述系统调用的执行主体包括目标应用程序自身、目标应用程序通过进程创建的系统调用创建的进程、目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用后重新启动的进程,所述系统调用的类型包括涉及文件的系统调用、涉及进程创建的系统调用、本地进程间通信类的系统调用、共享内核对象类的系统调用,且目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用时首先获取调用的进程的启动参数、杀死调用的进程并基于获取的启动参数以程序追踪模式重新启动调用的进程;最终分别记录文件的系统调用对应的文件加入操作系统依赖项中的文件依赖项、涉及进程创建的系统调用创建的进程加入作为操作系统依赖项中的进程依赖项、本地进程间通信类的系统调用和共享内核对象类的系统调用涉及的进程加入操作系统依赖项中的通信进程依赖项;
1.4)判断目标应用程序是否结束运行或者运行时间超过预设的时间阀值,如果目标应用程序是否结束运行或者运行时间超过预设的时间阀值,则跳转执行下一步;
1.5)判断本轮追踪执行得到的操作系统依赖项是否有新项目增加,如果有新的项目增加,则改变目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行下一轮迭代追踪执行,跳转执行步骤1.2);否则,跳转执行步骤2)。
参见前文可知,环境变量依赖项包括环境变量依赖项、文件依赖项、进程依赖项、通信进程依赖项四种,其中文件依赖项、进程依赖项、通信进程依赖项可以为软件包、软件库、操作系统服务、进程、文件、符号链接等类型,其本质上为依赖的文件。
本实施例中,步骤1.2)中收集目标应用程序运行所需要的环境变量及环境变量值具体是指方法(1)、方法(2)中的至少一种:方法(1)在目标应用程序执行前记录当前可见的环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项;方法(2)在目标应用程序执行过程中对监控getenv标准库函数的函数调用,记录目标应用程序对监控getenv标准库函数的函数调用获得环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项。
本实施例中,1.3)监控目标应用程序运行期间的系统调用在syscall_entry函数中增加对所有文件处理相关系统调用的监控。步骤1.3)中文件的系统调用包括:调用号2为的sys_open函数调用、调用号4为的sys_stat函数调用、调用号为6的sys_lstat函数调用、调用号为21的sys_access函数调用、调用号为59的sys_execve函数调用、调用号为127的sys_statfs函数调用、调用号为188的sys_setxattr函数调用、调用号为189的sys_lsetxattr函数调用、调用号为191的sys_getxattr函数调用、调用号为192的sys_lgetxattr函数调用、调用号为195的sys_listxattr函数调用、调用号196为的sys_llistxattr函数调用;步骤1.3)中涉及进程创建的系统调用包括:调用号为56的sys_clone函数调用、调用号为57的sys_fork函数调用、调用号为58的sys_vfork函数调用;步骤1.3)中本地进程间通信类的系统调用包括:调用号22为的sys_pipe函数调用、调用号为293的sys_pipe2函数调用、调用号为62的sys_kill函数调用、调用号为42的sys_connect函数调用、调用号为43的sys_accept函数调用、调用号为299的sys_recvmmsg函数调用、调用号为307的sys_sendmmsg函数调用;步骤1.3)中共享内核对象类的系统调用包括:调用号为30的sys_shmat函数调用、调用号为31的sys_shmctl函数调用、调用号为9的sys_mmap函数调用。
对于文件的处理:本实施例中在syscall_entry函数中增加对所有文件处理相关系统调用的监控,如sys_open(2)、 sys_stat(4)、sys_lstat(6)、sys_access(21)、sys_execve(59)、sys_statfs(137)、sys_setxattr(188)、sys_lsetxattr(189)、sys_getxattr(191)、sys_lgetxattr(192)、sys_listxattr(195),sys_llistxattr(196)等,括号中为对应的Linux系统调用号,下同。这样一来,当目标进程打开一个文件或者查找文件信息时,我们就记录该文件的绝对路径。对于子进程的处理:本实施例中在syscall_entry函数中增加对创建子进程相关系统调用的监控,如sys_clone(56),sys_fork(57)、sys_vfork(58)等。当程序创建子进程时,我们以同样的程序执行追踪方法追踪该子进程,收集子进程对操作系统环境的依赖项。
对于本地进程间通信的处理:当程序通过进程间通信与其他进程交互时,说明其他进程是本程序正常执行所需要的,即其他进程就成了本程序的依赖项,我们称之为程序的依赖进程。依赖进程的依赖项也是本程序的依赖项,因此这些依赖项也需要以递归的方式获取。依赖进程的依赖项由两部分组成:a)进程的可执行程序本身;b)进程在运行时对操作系统的依赖项。进程的可执行程序可以通过查找进程启动时的命令行参数获得。进程在运行时对操作系统的依赖项可以递归的使用我们的迭代追踪过程获取。本实施例中进程间通信的处理过程如下:监控进程间通信的系统调用,如sys_pipe(22)、sys_pipe2(293)、sys_kill(62)、sys_connect(42)、sys_accept(43)、 sys_recvmmsg(299),sys_sendmmsg(307)当程序与其他进程通讯时,找到该进程的pid号。然后使用查找该进程的启动参数(在Linux下可使用ps –aux命令获得程序的命令行参数)。杀死该进程,再以迭代追踪的方式重新启动该进程,为该进程设置相同的命令行参数,从而实现对该进程的追踪,以便收集该进程的依赖项。
对于进程间共享的内核对象处理(互斥量、共享内存等):进程与外界交互的另一种常用方式是共享内核对象,如共享内存。如果程序在运行时与其他进程共享内存,那么其他进程也是该程序的依赖进程。我们同样需要用1.4)叙述的方法收集依赖进程的依赖项。进程间共享内核对象的处理过程如下:监控共享内核对象创建的系统调用,如sys_shmat(30)、 sys_shmctl(31)、 sys_mmap(9)等,查找打开该内核对象的进程pid(Linux下可使用dtrace查找打开内核对象的pid),即为依赖进程;然后通过pid查找依赖进程的命令行启动参数;以1.4)中描述的方法追踪依赖进程的依赖项。
本实施例中,每一轮的迭代追踪的步骤会产生大量的操作系统依赖项数据,并以文件的形式存储。为了提高效率、减少文件体积,步骤2)根据操作系统依赖项组织构建将目标应用程序打包至容器镜像的所需文件列表。本实施例中,步骤2)的详细步骤包括:
2.1)将所有的操作系统依赖项合并为一个文件;
2.2)针对合并后的文件去除重复项;读取合并后的依赖项文件,去掉其中的重复项。重复项有两种情况:不同的迭代中追踪到了同一个依赖项;一次迭代中追踪到了同一个依赖项,例如程序两次打开同一个文件;
2.3)针对合并后的文件去除非依赖项,所述非依赖项包括操作系统依赖项中的文件依赖项中目标应用程序在新的容器镜像环境中执行时会创建新的文件的项目;例如以“w”方式打开的文件,在新的环境中执行时程序会创建新的文件,因此程序的正常执行并不依赖于这种文件;
2.4)针对合并后的文件中操作系统依赖项中的文件依赖项,去除不需要在目标容器镜像中重建的项目,最终得到将目标应用程序打包至容器镜像的所需文件列表。
其中,不需要在目标容器镜像中重建的项目包括涉及/proc、/dev以及/tmp目录下的文件的项目。/proc目录挂载的是Linux中proc文件系统,该文件系统中的文件并非常规的磁盘文件,而是以文件的形式展示了Linux内核中的信息,每个Linux内核都有该proc文件系统,无需复制;/dev目录存放的是系统的设备文件,和具体的硬件设备关联,因此无需复制;/tmp目录存放的是系统的临时文件,不属于程序的依赖项,无须复制。
本实施例中,步骤3)的详细步骤包括:
3.1)初始化创建Dockerfile文件及其容器镜像文件创建目录;
3.2)针对将目标应用程序打包至容器镜像的所需文件列表,遍历选择其中的一个依赖项作为当前依赖项;
3.3)判断当前依赖项的类型:如果当前依赖项的类型为环境变量,则在Dockerfile文件中增加一条设置当前依赖项的环境变量的语句;如果当前依赖项的类型为文件,则在容器镜像文件创建目录下创建与当前依赖项的文件的原始目录结构相同的目录结构,并将当前依赖项的文件复制到容器镜像文件创建目录下的相同目录结构中;如果当前依赖项的类型为符号链接,递归遍历符号链接指向的文件直到链接指向最终指向的文件为常规文件,根据符号链接的指向关系在Dockerfile文件中重建完全相同的符号链接结构,并在容器镜像文件创建目录下创建与符号链接最终指向的文件的原始目录结构相同的目录结构,并将符号链接最终指向的文件复制到容器镜像文件创建目录下的相同目录结构中;例如,原来的文件是/usr/lib/xxx.so,那么我们就要在docker build目录下创建同样的目录结构,然后拷贝xxx.so到相应的目录中,如docker_build/usr/lib/xxx.so;如果依赖项是环境变量,我们需要在Dockerfile中增加一条“ENV xxx”,其中xxx为所设置的环境变量;如果依赖项是符号链接,我们就需要在docker容器中重建完全相同的符号链接结构。例如,依赖项是一个符号链接a,其指向关系为a->b->c->d,其中a、b、c均为符号链接,d为常规文件。符号链接的处理方式为:递归的遍历其指向的文件,直到最终的指向为常规文件为止。将最终指向的常规文件按照普通文件依赖项的方式处理,即按照目录结构拷贝到docker build目录中。对于遍历过程中得到的每一个符号链接,在DockerFile中添加“RUNln –sf [s] [d] ”命令,以便在容器中创建相同的符号链接,从而最终将当前依赖项转换为Dockerfile文件及其容器镜像文件;
3.4)判断将目标应用程序打包至容器镜像的所需文件是否遍历完毕,如果尚未遍历完毕,则遍历选择下一项作为当前项,跳转执行步骤3.3);否则,结束并退出。
本实施例还提供一种容器镜像快速生成方法,其实施步骤包括:
S1)针对目标应用程序,采用本实施例容器Dockerfile快速生成方法生成用于将目标应用程序打包进容器镜像的Dockerfile文件及其容器镜像文件创建目录;
S2)基于已有的基本容器镜像,通过docker build命令将Dockerfile文件及其容器镜像文件创建目录在目标主机上生成容器镜像,从而将目标应用程序打包进容器镜像中。
本实施例还提供一种容器镜像快速生成系统,包括计算机系统,计算机系统被编程以执行本实施例容器Dockerfile快速生成方法的步骤或者本实施例容器镜像快速生成方法的步骤。
综上所示,本实施例通过综合使用二进制程序执行追踪、进程运行时复杂依赖分析,让特定应用在一个受透明监控的环境中,完成一次真实执行。然后,根据分析真实执行过程中,该特定应用对系统中各个库、数据、其他可执行程序的依赖,为特定应用,自动组织并产生其容器镜像构建所需的所有文件,并自动生成Dockerfile脚本,进而将特定应用打包进容器镜像中。由于进程运行时与操作系统、及系统内其他进程交互式的复杂性,这个自动化打包过程,不能简单的通过抽取这个进程所打开的文件名,来完成打包任务。本专利完整的考虑了进程在系统中的各种可能的交互行为,并通过不断迭代的运行时追踪过程,完成目标应用程序的最小可执行环境闭包的构建。
实施例二:
本实施例与实施例一基本相同,其主要区别点为:步骤1为针对单个目标应用程序,而本实施例容器Dockerfile快速生成方法是针对多个目标应用程序,针对多个目标应用程序而言,其步骤1)包含针对多个目标应用程序的遍历处理,步骤2)和步骤3)则完全相同,从而可以完成多个目标应用程序的最小可执行环境闭包的构建。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种容器Dockerfile快速生成方法,其特征在于实施步骤包括:
1)针对待打包的目标应用程序,运行目标应用程序并对目标应用程序追踪执行,记录目标应用程序在运行过程中的操作系统依赖项;所述运行目标应用程序并对目标应用程序追踪执行具体是指将目标应用程序隔离在一个独立的操作系统进程空间中运行,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控;
2)根据操作系统依赖项组织构建将目标应用程序打包至容器镜像的所需文件列表;
3)根据将目标应用程序打包至容器镜像的所需文件列表生成用于将目标应用程序打包至容器镜像的Dockerfile文件及其容器镜像文件创建目录。
2.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤1)的详细步骤包括:
1.1)针对待打包的目标应用程序,将目标应用程序隔离在一个独立的操作系统进程空间中,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控;初始化生成目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行一轮迭代追踪执行;
1.2)收集目标应用程序运行所需要的环境变量及环境变量值,加入目标应用程序在运行过程中的操作系统依赖项中的环境变量依赖项;
1.3)监控目标应用程序运行期间的系统调用,所述系统调用的执行主体包括目标应用程序自身、目标应用程序通过进程创建的系统调用创建的进程、目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用后重新启动的进程,所述系统调用的类型包括涉及文件的系统调用、涉及进程创建的系统调用、本地进程间通信类的系统调用、共享内核对象类的系统调用,且目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用时首先获取调用的进程的启动参数、杀死调用的进程并基于获取的启动参数以程序追踪模式重新启动调用的进程;最终分别记录文件的系统调用对应的文件加入操作系统依赖项中的文件依赖项、涉及进程创建的系统调用创建的进程加入作为操作系统依赖项中的进程依赖项、本地进程间通信类的系统调用和共享内核对象类的系统调用涉及的进程加入操作系统依赖项中的通信进程依赖项;
1.4)判断目标应用程序是否结束运行或者运行时间超过预设的时间阀值,如果目标应用程序是否结束运行或者运行时间超过预设的时间阀值,则跳转执行下一步;
1.5)判断本轮追踪执行得到的操作系统依赖项是否有新项目增加,如果有新的项目增加,则改变目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行下一轮迭代追踪执行,跳转执行步骤1.2);否则,跳转执行步骤2)。
3.根据权利要求2所述的容器Dockerfile快速生成方法,其特征在于,步骤1.2)中收集目标应用程序运行所需要的环境变量及环境变量值具体是指方法(1)、方法(2)中的至少一种:方法(1)在目标应用程序执行前记录当前可见的环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项;方法(2)在目标应用程序执行过程中对监控getenv标准库函数的函数调用,记录目标应用程序对监控getenv标准库函数的函数调用获得环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项。
4.根据权利要求2所述的容器Dockerfile快速生成方法,其特征在于,步骤1.3)中文件的系统调用包括:调用号2为的sys_open函数调用、调用号4为的sys_stat函数调用、调用号为6的sys_lstat函数调用、调用号为21的sys_access函数调用、调用号为59的sys_execve函数调用、调用号为127的sys_statfs函数调用、调用号为188的sys_setxattr函数调用、调用号为189的sys_lsetxattr函数调用、调用号为191的sys_getxattr函数调用、调用号为192的sys_lgetxattr函数调用、调用号为195的sys_listxattr函数调用、调用号196为的sys_llistxattr函数调用;步骤1.3)中涉及进程创建的系统调用包括:调用号为56的sys_clone函数调用、调用号为57的sys_fork函数调用、调用号为58的sys_vfork函数调用;步骤1.3)中本地进程间通信类的系统调用包括:调用号22为的sys_pipe函数调用、调用号为293的sys_pipe2函数调用、调用号为62的sys_kill函数调用、调用号为42的sys_connect函数调用、调用号为43的sys_accept函数调用、调用号为299的sys_recvmmsg函数调用、调用号为307的sys_sendmmsg函数调用;步骤1.3)中共享内核对象类的系统调用包括:调用号为30的sys_shmat函数调用、调用号为31的sys_shmctl函数调用、调用号为9的sys_mmap函数调用。
5.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤1)中运行目标应用程序并对目标应用程序追踪执行时,对目标应用程序追踪执行采用的方法为动态二进制翻译、进程调试、动态链接库劫持三种方法中的一种。
6.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤2)的详细步骤包括:
2.1)将所有的操作系统依赖项合并为一个文件;
2.2)针对合并后的文件去除重复项;
2.3)针对合并后的文件去除非依赖项,所述非依赖项包括操作系统依赖项中的文件依赖项中目标应用程序在新的容器镜像环境中执行时会创建新的文件的项目;
2.4)针对合并后的文件中操作系统依赖项中的文件依赖项,去除不需要在目标容器镜像中重建的项目,最终得到将目标应用程序打包至容器镜像的所需文件列表。
7.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤3)的详细步骤包括:
3.1)初始化创建Dockerfile文件及其容器镜像文件创建目录;
3.2)针对将目标应用程序打包至容器镜像的所需文件列表,遍历选择其中的一个依赖项作为当前依赖项;
3.3)判断当前依赖项的类型:如果当前依赖项的类型为环境变量,则在Dockerfile文件中增加一条设置当前依赖项的环境变量的语句;如果当前依赖项的类型为文件,则在容器镜像文件创建目录下创建与当前依赖项的文件的原始目录结构相同的目录结构,并将当前依赖项的文件复制到容器镜像文件创建目录下的相同目录结构中;如果当前依赖项的类型为符号链接,递归遍历符号链接指向的文件直到链接指向最终指向的文件为常规文件,根据符号链接的指向关系在Dockerfile文件中重建完全相同的符号链接结构,并在容器镜像文件创建目录下创建与符号链接最终指向的文件的原始目录结构相同的目录结构,并将符号链接最终指向的文件复制到容器镜像文件创建目录下的相同目录结构中;
3.4)判断将目标应用程序打包至容器镜像的所需文件是否遍历完毕,如果尚未遍历完毕,则遍历选择下一项作为当前项,跳转执行步骤3.3);否则,结束并退出。
8.一种容器镜像快速生成方法,其特征在于实施步骤包括:
S1)针对目标应用程序,采用权利要求1~7中任意一项所述容器Dockerfile快速生成方法生成用于将目标应用程序打包进容器镜像的Dockerfile文件及其容器镜像文件创建目录;
S2)基于已有的基本容器镜像,通过docker build命令将Dockerfile文件及其容器镜像文件创建目录在目标主机上生成容器镜像,从而将目标应用程序打包进容器镜像中。
9.一种容器镜像快速生成系统,包括计算机系统,其特征在于:所述计算机系统被编程以执行权利要求1~7中任意一项所述容器镜像快速生成方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810145672.XA CN108415795B (zh) | 2018-02-12 | 2018-02-12 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
US16/618,402 US11656893B2 (en) | 2018-02-12 | 2018-11-21 | Container dockerfile and container mirror image quick generation methods and systems |
PCT/CN2018/116558 WO2019153829A1 (zh) | 2018-02-12 | 2018-11-21 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810145672.XA CN108415795B (zh) | 2018-02-12 | 2018-02-12 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108415795A CN108415795A (zh) | 2018-08-17 |
CN108415795B true CN108415795B (zh) | 2019-04-05 |
Family
ID=63128506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810145672.XA Active CN108415795B (zh) | 2018-02-12 | 2018-02-12 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11656893B2 (zh) |
CN (1) | CN108415795B (zh) |
WO (1) | WO2019153829A1 (zh) |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415795B (zh) | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
US10936725B2 (en) | 2018-10-17 | 2021-03-02 | Accenture Global Solutions Limited | Container image vulnerability reduction |
CN111198744B (zh) * | 2018-11-16 | 2023-05-30 | 中标软件有限公司 | 自动化应用程序容器化和镜像备份发布的方法 |
CN109614117A (zh) * | 2018-11-20 | 2019-04-12 | 山东超越数控电子股份有限公司 | 一种Linux系统镜像的构建方法和系统、Linux系统镜像 |
CN109739616A (zh) * | 2018-12-05 | 2019-05-10 | 国云科技股份有限公司 | 一种云平台容器镜像批量制作方法 |
CN109739619B (zh) * | 2018-12-12 | 2021-07-06 | 咪咕文化科技有限公司 | 一种基于容器化应用的处理方法、装置及存储介质 |
US10990365B2 (en) * | 2019-02-26 | 2021-04-27 | Red Hat, Inc. | Container image building using dependency container images |
US11941494B2 (en) * | 2019-05-13 | 2024-03-26 | Adobe Inc. | Notebook interface for authoring enterprise machine learning models |
US12135896B2 (en) | 2019-08-01 | 2024-11-05 | International Business Machines Corporation | Side-effect resistant operation testing |
CN112416737B (zh) * | 2019-08-21 | 2024-03-01 | 广州虎牙科技有限公司 | 一种容器的测试方法、装置、设备和存储介质 |
CN110704098B (zh) * | 2019-09-29 | 2023-05-23 | 科大国创软件股份有限公司 | 一种根据应用包特征自动生成容器镜像的智能打包方法 |
CN110806876B (zh) * | 2019-10-31 | 2023-12-05 | 深圳忆联信息系统有限公司 | 基于Slitaz的轻量级Linux系统定制方法、装置计算机设备及存储介质 |
CN111190687B (zh) * | 2019-11-28 | 2023-06-30 | 安超云软件有限公司 | 一种容器镜像的构建方法、装置、设备及存储介质 |
CN111104113A (zh) * | 2019-12-04 | 2020-05-05 | 紫光云(南京)数字技术有限公司 | Docker镜像自动生成方法 |
CN111078358B (zh) * | 2019-12-05 | 2023-09-05 | 中车株洲电力机车有限公司 | 一种基于软件容器的试验数据处理方法及系统 |
CN111221541A (zh) * | 2019-12-26 | 2020-06-02 | 曙光信息产业(北京)有限公司 | 集群并行程序部署方法以及装置 |
US11429596B2 (en) | 2020-04-20 | 2022-08-30 | International Business Machines Corporation | Update for configuration file |
CN111610989B (zh) * | 2020-06-17 | 2023-09-29 | 中国人民解放军国防科技大学 | 一种面向离线容器云环境的应用发布/更新方法及系统 |
US11520573B2 (en) * | 2020-07-08 | 2022-12-06 | Vmware, Inc. | Guided application rollback and migration |
CN112099917B (zh) * | 2020-09-08 | 2022-02-11 | 中国电力科学研究院有限公司 | 调控系统容器化应用运行管理方法、系统、设备及介质 |
CN112084391B (zh) * | 2020-09-08 | 2024-02-09 | 中国平安人寿保险股份有限公司 | 依赖包信息的获取方法、装置、设备及计算机介质 |
CN112947949B (zh) * | 2020-09-22 | 2024-07-23 | 深圳市明源云科技有限公司 | 应用程序安装方法、装置及电子设备 |
CN113821219B (zh) * | 2020-11-16 | 2024-09-20 | 北京沃东天骏信息技术有限公司 | 一种实现应用程序容器化的方法及系统 |
KR102459269B1 (ko) * | 2020-11-19 | 2022-10-26 | 숭실대학교 산학협력단 | 이진 분석을 수행하는 소프트웨어 패키징 장치, 방법 및 이를 수행하기 위한 프로그램이 기록된 기록매체 |
US20220156052A1 (en) * | 2020-11-19 | 2022-05-19 | Foundation Of Soongsil University-Industry Cooperation | Software packaging device and method for performing binary analysis, and recording medium on which program for performing the same is recorded |
US11748153B2 (en) | 2020-11-25 | 2023-09-05 | International Business Machines Corporation | Anticipated containerized infrastructure used in performing cloud migration |
CN112506615B (zh) * | 2020-12-11 | 2023-11-03 | 浪潮电子信息产业股份有限公司 | JavaWeb应用部署方法、装置、设备及存储介质 |
CN112558998A (zh) * | 2020-12-28 | 2021-03-26 | 慧科教育科技集团有限公司 | 一种实验内容研发平台 |
CN112764878B (zh) * | 2021-01-13 | 2024-04-23 | 中科曙光(南京)计算技术有限公司 | 一种基于深度学习的大数据一体机容器集群风险预测方法 |
CN112835594A (zh) * | 2021-01-15 | 2021-05-25 | 深圳行云创新科技有限公司 | 基于Kubernetes的镜像构建方法及其构建系统 |
CN112860481A (zh) * | 2021-01-25 | 2021-05-28 | 启明星辰信息技术集团股份有限公司 | 一种本地Docker镜像信息采集系统及其采集方法 |
US11893385B2 (en) * | 2021-02-17 | 2024-02-06 | Open Weaver Inc. | Methods and systems for automated software natural language documentation |
US11947530B2 (en) | 2021-02-24 | 2024-04-02 | Open Weaver Inc. | Methods and systems to automatically generate search queries from software documents to validate software component search engines |
US11960492B2 (en) | 2021-02-24 | 2024-04-16 | Open Weaver Inc. | Methods and systems for display of search item scores and related information for easier search result selection |
US12106094B2 (en) | 2021-02-24 | 2024-10-01 | Open Weaver Inc. | Methods and systems for auto creation of software component reference guide from multiple information sources |
US11921763B2 (en) | 2021-02-24 | 2024-03-05 | Open Weaver Inc. | Methods and systems to parse a software component search query to enable multi entity search |
US11836069B2 (en) | 2021-02-24 | 2023-12-05 | Open Weaver Inc. | Methods and systems for assessing functional validation of software components comparing source code and feature documentation |
US11836202B2 (en) | 2021-02-24 | 2023-12-05 | Open Weaver Inc. | Methods and systems for dynamic search listing ranking of software components |
CN112882938B (zh) * | 2021-02-25 | 2023-03-14 | 重庆紫光华山智安科技有限公司 | 一种场景数据测试方法、系统、电子设备及介质 |
US11853745B2 (en) | 2021-02-26 | 2023-12-26 | Open Weaver Inc. | Methods and systems for automated open source software reuse scoring |
CN115113972A (zh) * | 2021-03-23 | 2022-09-27 | 华为云计算技术有限公司 | 应用改造方法、系统、集群、介质及程序产品 |
CN113157281B (zh) * | 2021-03-26 | 2024-02-13 | 北京百度网讯科技有限公司 | 开发环境的创建方法、装置、电子设备和存储介质 |
CN113032104A (zh) * | 2021-04-19 | 2021-06-25 | 广州欢网科技有限责任公司 | 一种部署k8s容器应用的方法和装置 |
CN113360244B (zh) * | 2021-05-13 | 2022-07-01 | 烽火通信科技股份有限公司 | 远端容器镜像应用方法、系统及设备 |
CN113342359B (zh) * | 2021-05-13 | 2023-03-24 | 烽火通信科技股份有限公司 | 容器镜像文件智能生成方法、装置、设备及存储介质 |
CN113204410B (zh) * | 2021-05-31 | 2024-01-30 | 平安科技(深圳)有限公司 | 集装箱式本地化部署方法、系统、设备及存储介质 |
CN113209633B (zh) * | 2021-06-09 | 2023-07-07 | 腾讯科技(深圳)有限公司 | 镜像的处理方法、装置、电子设备及可读存储介质 |
US11966343B2 (en) | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
US11997170B2 (en) * | 2021-07-21 | 2024-05-28 | VMware LLC | Automated migration of monolithic applications to container platforms |
CN113806009A (zh) * | 2021-08-05 | 2021-12-17 | 厦门市美亚柏科信息股份有限公司 | 一种Docker容器自动重建方法、终端设备及存储介质 |
KR20230041361A (ko) * | 2021-09-17 | 2023-03-24 | 한국전자통신연구원 | 도커 이미지 생성 장치 및 방법 |
CN113553041B (zh) * | 2021-09-22 | 2021-12-10 | 武汉江民网安科技有限公司 | 二进制程序中函数代码形式化结构生成方法、设备及介质 |
CN113961174B (zh) * | 2021-10-25 | 2024-04-30 | 上海电器科学研究所(集团)有限公司 | 一种基于云原生微服务的模型开发与部署方法 |
CN113806022B (zh) * | 2021-11-17 | 2022-03-15 | 广西梯度科技有限公司 | 基于Kubernetes上传容器镜像文件到容器镜像仓库的方法及装置 |
US20230176837A1 (en) * | 2021-12-07 | 2023-06-08 | Dell Products L.P. | Automated generation of additional versions of microservices |
CN114047938B (zh) * | 2022-01-11 | 2023-05-26 | 北京向量栈科技有限公司 | 一种构建镜像的方法、装置、设备及可读存储介质 |
CN114564215A (zh) * | 2022-02-08 | 2022-05-31 | 武汉极目智能技术有限公司 | 多应用web服务器的运维方法及系统 |
CN114217908B (zh) * | 2022-02-23 | 2022-07-15 | 广州趣丸网络科技有限公司 | 容器启动方法、系统、装置及设备 |
CN114595034B (zh) * | 2022-03-07 | 2024-07-26 | 中南大学 | 一种容器镜像体积缩小方法、存储器及装置 |
CN114461271B (zh) * | 2022-04-12 | 2022-06-21 | 梯度云科技(北京)有限公司 | 一种节省存储空间的容器镜像打包方法及装置 |
CN114721783B (zh) * | 2022-05-16 | 2022-08-26 | 龙芯中科技术股份有限公司 | 资源文件提取方法、装置、电子设备及存储介质 |
US11954474B2 (en) | 2022-06-14 | 2024-04-09 | International Business Machines Corporation | Generating compliant container images via embeddings |
CN115329343B (zh) * | 2022-08-23 | 2023-04-07 | 武汉能量云计算科技有限公司 | 一种信息安全漏洞的处理方法及系统 |
US12086579B2 (en) * | 2022-08-31 | 2024-09-10 | Red Hat, Inc. | Deriving a container from a package set |
CN115454572A (zh) * | 2022-09-20 | 2022-12-09 | 北京志凌海纳科技有限公司 | 基于Docker工具构建虚拟机磁盘镜像的方法及系统 |
CN115828231B (zh) * | 2022-10-28 | 2024-07-02 | 广州汽车集团股份有限公司 | 应用程序运行方法、装置、车辆以及存储介质 |
CN116610330A (zh) * | 2022-11-29 | 2023-08-18 | 天翼数字生活科技有限公司 | 对iOS开发第三方依赖进行快速搭建的方法和系统 |
CN115562690B (zh) * | 2022-12-05 | 2023-04-18 | 杭州未名信科科技有限公司 | 基于Docker容器的算法服务处理方法、装置及介质 |
CN116048724A (zh) * | 2022-12-30 | 2023-05-02 | 龙芯中科(太原)技术有限公司 | 一种镜像创建方法、装置、电子设备及存储介质 |
CN116450153B (zh) * | 2023-04-26 | 2023-11-24 | 北京计算机技术及应用研究所 | 一种容器化仿真平台快速部署方法 |
CN116932465B (zh) * | 2023-09-15 | 2024-01-23 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种镜像文件管理方法、系统、设备及介质 |
CN117369865B (zh) * | 2023-12-07 | 2024-04-05 | 麒麟软件有限公司 | 一种GNU linux通用的应用程序打包方法及图形化应用打包器 |
CN117539439B (zh) * | 2024-01-09 | 2024-04-09 | 北京腾达泰源科技有限公司 | 轻量实时应用开发方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653449A (zh) * | 2015-12-28 | 2016-06-08 | 湖南蚁坊软件有限公司 | 一种基于容器虚拟化的持续集成方法 |
CN106325975A (zh) * | 2016-09-09 | 2017-01-11 | 浪潮软件股份有限公司 | 一种利用Docker容器自动化部署与管理大数据集群的方法 |
WO2017124025A1 (en) * | 2016-01-15 | 2017-07-20 | Google Inc. | Identifiers across application instances |
CN106970822A (zh) * | 2017-02-20 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 一种容器创建方法及装置 |
CN107423108A (zh) * | 2017-04-25 | 2017-12-01 | 华中科技大学 | 一种基于安卓设备的arm容器运行环境构建方法 |
CN107450964A (zh) * | 2017-08-10 | 2017-12-08 | 西安电子科技大学 | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 |
CN107491329A (zh) * | 2017-08-04 | 2017-12-19 | 上海携程商务有限公司 | Docker镜像构建方法、设备、存储介质以及电子装置 |
CN107577496A (zh) * | 2017-09-15 | 2018-01-12 | 济南浚达信息技术有限公司 | 一种基于Docker部署桌面云管理平台的系统及其工作方法与应用 |
CN107577475A (zh) * | 2017-08-22 | 2018-01-12 | 清华大学 | 一种数据中心集群系统的软件包管理方法及系统 |
CN107678756A (zh) * | 2017-09-29 | 2018-02-09 | 千寻位置网络有限公司 | 一种基于Docker的Web应用一键发布方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844954B2 (en) * | 2007-11-06 | 2010-11-30 | Vmware, Inc. | Using branch instruction counts to facilitate replay of virtual machine instruction execution |
CN101751345B (zh) * | 2008-12-10 | 2012-04-11 | 国际商业机器公司 | 在主机中运行客户机的程序的模拟器和模拟方法 |
CN103970581B (zh) * | 2013-01-24 | 2017-09-12 | 国际商业机器公司 | 创建虚拟资源包的方法和设备 |
US9442717B2 (en) * | 2014-07-15 | 2016-09-13 | Vmware, Inc. | Techniques for automatically identifying input files used to generate output files in a software build process |
US20160350081A1 (en) * | 2015-05-27 | 2016-12-01 | Runnable Inc. | Automatic container definition |
CN104991815B (zh) | 2015-06-19 | 2019-01-18 | 北京奇虎科技有限公司 | Docker容器的管理方法和系统 |
US9639558B2 (en) * | 2015-09-17 | 2017-05-02 | International Business Machines Corporation | Image building |
CN105867955A (zh) * | 2015-09-18 | 2016-08-17 | 乐视云计算有限公司 | 一种应用程序部署系统及部署方法 |
CN105511943B (zh) * | 2015-12-03 | 2019-04-12 | 华为技术有限公司 | 一种Docker容器运行方法和装置 |
US20180088973A1 (en) * | 2016-09-25 | 2018-03-29 | Dinesh Subhraveti | Methods and systems for interconversions among virtual machines, containers and container specifications |
US10146599B2 (en) * | 2016-12-06 | 2018-12-04 | Synchronoss Technologies, Inc. | System and method for a generic actor system container application |
US11113090B1 (en) * | 2017-08-09 | 2021-09-07 | United Services Automobile Association (Usaa) | Systems and methods for container management |
CN107463432A (zh) * | 2017-08-17 | 2017-12-12 | 福建中金在线信息科技有限公司 | 服务器生产环境部署方法、装置、电子设备及存储介质 |
US10572294B1 (en) * | 2018-01-03 | 2020-02-25 | Amazon Technologies, Inc. | Automated application footprint discovery for application migration to containers |
CN108415795B (zh) * | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
-
2018
- 2018-02-12 CN CN201810145672.XA patent/CN108415795B/zh active Active
- 2018-11-21 US US16/618,402 patent/US11656893B2/en active Active
- 2018-11-21 WO PCT/CN2018/116558 patent/WO2019153829A1/zh active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653449A (zh) * | 2015-12-28 | 2016-06-08 | 湖南蚁坊软件有限公司 | 一种基于容器虚拟化的持续集成方法 |
WO2017124025A1 (en) * | 2016-01-15 | 2017-07-20 | Google Inc. | Identifiers across application instances |
CN106325975A (zh) * | 2016-09-09 | 2017-01-11 | 浪潮软件股份有限公司 | 一种利用Docker容器自动化部署与管理大数据集群的方法 |
CN106970822A (zh) * | 2017-02-20 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 一种容器创建方法及装置 |
CN107423108A (zh) * | 2017-04-25 | 2017-12-01 | 华中科技大学 | 一种基于安卓设备的arm容器运行环境构建方法 |
CN107491329A (zh) * | 2017-08-04 | 2017-12-19 | 上海携程商务有限公司 | Docker镜像构建方法、设备、存储介质以及电子装置 |
CN107450964A (zh) * | 2017-08-10 | 2017-12-08 | 西安电子科技大学 | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 |
CN107577475A (zh) * | 2017-08-22 | 2018-01-12 | 清华大学 | 一种数据中心集群系统的软件包管理方法及系统 |
CN107577496A (zh) * | 2017-09-15 | 2018-01-12 | 济南浚达信息技术有限公司 | 一种基于Docker部署桌面云管理平台的系统及其工作方法与应用 |
CN107678756A (zh) * | 2017-09-29 | 2018-02-09 | 千寻位置网络有限公司 | 一种基于Docker的Web应用一键发布方法 |
Non-Patent Citations (2)
Title |
---|
基于代码依赖分析的软件可追踪技术研究;匡宏宇;《中国博士学位论文全文数据库信息科技辑》;中国学术期刊(光盘版)电子杂志社;20170415;第2017卷(第04期);第6-8页 |
容器云计算平台关键技术研究;袁忠良;《中国优秀硕士学位论文全文数据库信息科技辑》;中国学术期刊(光盘版)电子杂志社;20170815;第2017卷(第08期);第11-13、19-21页 |
Also Published As
Publication number | Publication date |
---|---|
WO2019153829A1 (zh) | 2019-08-15 |
US20200293354A1 (en) | 2020-09-17 |
US11656893B2 (en) | 2023-05-23 |
CN108415795A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108415795B (zh) | 一种容器Dockerfile、容器镜像快速生成方法及系统 | |
US10474438B2 (en) | Intelligent cloud engineering platform | |
Singh et al. | Comparison of different CI/CD tools integrated with cloud platform | |
Binz et al. | CMotion: A Framework for Migration of Applications into and between Clouds | |
CN106406960B (zh) | 一种linux环境中快速部署软件的方法 | |
US10585785B2 (en) | Preservation of modifications after overlay removal from a container | |
US20180113799A1 (en) | Model generation for model-based application testing | |
Siddiqui et al. | Comprehensive analysis of container technology | |
Spillner et al. | Java code analysis and transformation into AWS lambda functions | |
Qasha et al. | A framework for scientific workflow reproducibility in the cloud | |
Kacamarga et al. | Lightweight virtualization in cloud computing for research | |
Maudoux et al. | Correct, efficient, and tailored: The future of build systems | |
Nüst et al. | The rockerverse: packages and applications for containerization with r | |
Leszko | Continuous Delivery with Docker and Jenkins: Create secure applications by building complete CI/CD pipelines | |
Chakraborty et al. | Enabling seamless execution of computational and data science workflows on hpc and cloud with the popper container-native automation engine | |
US9183001B2 (en) | Simulation of static members and parameterized constructors on an interface-based API | |
Malhotra et al. | Evaluate Canary Deployment Techniques using Kubernetes, Istio and Liquibase for Cloud Native Enterprise Applications to Achieve Zero Downtime for Continuous Deployments | |
Khan et al. | Developing Multi-Platform Apps with Visual Studio Code: Get up and running with VS Code by building multi-platform, cloud-native, and microservices-based apps | |
Bhattacharjee et al. | Cloudcamp: A model-driven generative approach for automating cloud application deployment and management | |
Wettinger | Gathering solutions and providing apis for their orchestration to implement continuous software delivery | |
Mahajan et al. | Cloud-Native Applications in Java: Build microservice-based cloud-native applications that dynamically scale | |
Storetvedt | A new Grid workflow for data analysis within the ALICE project using containers and modern Cloud technologies | |
Alaisami | Cloud-native applications: authoring and evaluation of two deployment patterns | |
Binder et al. | Process Migration Framework-Virtualising and Documenting Business Processes | |
Youqin | A Comparison between Java and Go for Microservice Development and Cloud Deployment |
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 |