CN108415795A - 一种容器Dockerfile、容器镜像快速生成方法及系统 - Google Patents

一种容器Dockerfile、容器镜像快速生成方法及系统 Download PDF

Info

Publication number
CN108415795A
CN108415795A CN201810145672.XA CN201810145672A CN108415795A CN 108415795 A CN108415795 A CN 108415795A CN 201810145672 A CN201810145672 A CN 201810145672A CN 108415795 A CN108415795 A CN 108415795A
Authority
CN
China
Prior art keywords
destination application
container
item
file
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.)
Granted
Application number
CN201810145672.XA
Other languages
English (en)
Other versions
CN108415795B (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.)
Human And Future Biotechnology (changsha) Co Ltd
Original Assignee
Human And Future Biotechnology (changsha) 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 Human And Future Biotechnology (changsha) Co Ltd filed Critical Human And Future Biotechnology (changsha) Co Ltd
Priority to CN201810145672.XA priority Critical patent/CN108415795B/zh
Publication of CN108415795A publication Critical patent/CN108415795A/zh
Priority to PCT/CN2018/116558 priority patent/WO2019153829A1/zh
Priority to US16/618,402 priority patent/US11656893B2/en
Application granted granted Critical
Publication of CN108415795B publication Critical patent/CN108415795B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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/3419Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image 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、容器镜像快速生成方法及系统
技术领域
本发明涉及容器生成和云计算技术,具体涉及一种容器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中添加“RUN ln –sf [s] [d] ”命令,以便在容器中创建相同的符号链接,从而最终将当前依赖项转换为Dockerfile文件及其容器镜像文件;
3.4)判断将目标应用程序打包至容器镜像的所需文件是否遍历完毕,如果尚未遍历完毕,则遍历选择下一项作为当前项,跳转执行步骤3.3);否则,结束并退出。
本实施例还提供一种容器镜像快速生成方法,其实施步骤包括:
S1)针对目标应用程序,采用本实施例容器Dockerfile快速生成方法生成用于将目标应用程序打包进容器镜像的Dockerfile文件及其容器镜像文件创建目录;
S2)基于已有的基本容器镜像,通过docker build命令将Dockerfile文件及其容器镜像文件创建目录在目标主机上生成容器镜像,从而将目标应用程序打包进容器镜像中。
本实施例还提供一种容器镜像快速生成系统,包括计算机系统,计算机系统被编程以执行本实施例容器Dockerfile快速生成方法的步骤或者本实施例容器镜像快速生成方法的步骤。
综上所示,本实施例通过综合使用二进制程序执行追踪、进程运行时复杂依赖分析,让特定应用在一个受透明监控的环境中,完成一次真实执行。然后,根据分析真实执行过程中,该特定应用对系统中各个库、数据、其他可执行程序的依赖,为特定应用,自动组织并产生其容器镜像构建所需的所有文件,并自动生成Dockerfile脚本,进而将特定应用打包进容器镜像中。由于进程运行时与操作系统、及系统内其他进程交互式的复杂性,这个自动化打包过程,不能简单的通过抽取这个进程所打开的文件名,来完成打包任务。本专利完整的考虑了进程在系统中的各种可能的交互行为,并通过不断迭代的运行时追踪过程,完成目标应用程序的最小可执行环境闭包的构建。
实施例二:
本实施例与实施例一基本相同,其主要区别点为:步骤1为针对单个目标应用程序,而本实施例容器Dockerfile快速生成方法是针对多个目标应用程序,针对多个目标应用程序而言,其步骤1)包含针对多个目标应用程序的遍历处理,步骤2)和步骤3)则完全相同,从而可以完成多个目标应用程序的最小可执行环境闭包的构建。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种容器Dockerfile快速生成方法,其特征在于实施步骤包括:
1)针对待打包的目标应用程序,运行目标应用程序并对目标应用程序追踪执行,记录目标应用程序在运行过程中的操作系统依赖项;
2)根据操作系统依赖项组织构建将目标应用程序打包至容器镜像的所需文件列表;
3)根据将目标应用程序打包至容器镜像的所需文件列表生成用于将目标应用程序打包至容器镜像的Dockerfile文件及其容器镜像文件创建目录。
2.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤1)中运行目标应用程序并对目标应用程序追踪执行具体是指将目标应用程序隔离在一个独立的操作系统进程空间中运行,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控。
3.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤1)的详细步骤包括:
1.1)针对待打包的目标应用程序,将目标应用程序隔离在一个独立的操作系统进程空间中,该独立的操作系统进程空间中系统调用是目标应用程序与外界交互的唯一通道,且目标应用程序的所有系统调用受到监控;初始化生成目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行一轮迭代追踪执行;
1.2)收集目标应用程序运行所需要的环境变量及环境变量值,加入目标应用程序在运行过程中的操作系统依赖项中的环境变量依赖项;
1.3)监控目标应用程序运行期间的系统调用,所述系统调用的执行主体包括目标应用程序自身、目标应用程序通过进程创建的系统调用创建的进程、目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用后重新启动的进程,所述系统调用的类型包括涉及文件的系统调用、涉及进程创建的系统调用、本地进程间通信类的系统调用、共享内核对象类的系统调用,且目标应用程序进行本地进程间通信类的系统调用以及共享内核对象类的系统调用时首先获取调用的进程的启动参数、杀死调用的进程并基于获取的启动参数以程序追踪模式重新启动调用的进程;最终分别记录文件的系统调用对应的文件加入操作系统依赖项中的文件依赖项、涉及进程创建的系统调用创建的进程加入作为操作系统依赖项中的进程依赖项、本地进程间通信类的系统调用和共享内核对象类的系统调用涉及的进程加入操作系统依赖项中的通信进程依赖项;
1.4)判断目标应用程序是否结束运行或者运行时间超过预设的时间阀值,如果目标应用程序是否结束运行或者运行时间超过预设的时间阀值,则跳转执行下一步;
1.5)判断本轮追踪执行得到的操作系统依赖项是否有新项目增加,如果有新的项目增加,则改变目标应用程序的运行参数,基于运行参数运行目标应用程序并对目标应用程序进行下一轮迭代追踪执行,跳转执行步骤1.2);否则,跳转执行步骤2)。
4.根据权利要求3所述的容器Dockerfile快速生成方法,其特征在于,步骤1.2)中收集目标应用程序运行所需要的环境变量及环境变量值具体是指方法(1)、方法(2)中的至少一种:方法(1)在目标应用程序执行前记录当前可见的环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项;方法(2)在目标应用程序执行过程中对监控getenv标准库函数的函数调用,记录目标应用程序对监控getenv标准库函数的函数调用获得环境变量及环境变量值,作为操作系统依赖项中的环境变量依赖项。
5.根据权利要求3所述的容器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函数调用。
6.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤1)中运行目标应用程序并对目标应用程序追踪执行时,对目标应用程序追踪执行采用的方法为动态二进制翻译、进程调试、动态链接库劫持三种方法中的一种。
7.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤2)的详细步骤包括:
2.1)将所有的操作系统依赖项合并为一个文件;
2.2)针对合并后的文件去除重复项;
2.3)针对合并后的文件去除非依赖项,所述非依赖项包括操作系统依赖项中的文件依赖项中目标应用程序在新的容器镜像环境中执行时会创建新的文件的项目;
2.4)针对合并后的文件中操作系统依赖项中的文件依赖项,去除不需要在目标容器镜像中重建的项目,最终得到将目标应用程序打包至容器镜像的所需文件列表。
8.根据权利要求1所述的容器Dockerfile快速生成方法,其特征在于,步骤3)的详细步骤包括:
3.1)初始化创建Dockerfile文件及其容器镜像文件创建目录;
3.2)针对将目标应用程序打包至容器镜像的所需文件列表,遍历选择其中的一个依赖项作为当前依赖项;
3.3)判断当前依赖项的类型:如果当前依赖项的类型为环境变量,则在Dockerfile文件中增加一条设置当前依赖项的环境变量的语句;如果当前依赖项的类型为文件,则在容器镜像文件创建目录下创建与当前依赖项的文件的原始目录结构相同的目录结构,并将当前依赖项的文件复制到容器镜像文件创建目录下的相同目录结构中;如果当前依赖项的类型为符号链接,递归遍历符号链接指向的文件直到链接指向最终指向的文件为常规文件,根据符号链接的指向关系在Dockerfile文件中重建完全相同的符号链接结构,并在容器镜像文件创建目录下创建与符号链接最终指向的文件的原始目录结构相同的目录结构,并将符号链接最终指向的文件复制到容器镜像文件创建目录下的相同目录结构中;
3.4)判断将目标应用程序打包至容器镜像的所需文件是否遍历完毕,如果尚未遍历完毕,则遍历选择下一项作为当前项,跳转执行步骤3.3);否则,结束并退出。
9.一种容器镜像快速生成方法,其特征在于实施步骤包括:
S1)针对目标应用程序,采用权利要求1~8中任意一项所述容器Dockerfile快速生成方法生成用于将目标应用程序打包进容器镜像的Dockerfile文件及其容器镜像文件创建目录;
S2)基于已有的基本容器镜像,通过docker build命令将Dockerfile文件及其容器镜像文件创建目录在目标主机上生成容器镜像,从而将目标应用程序打包进容器镜像中。
10.一种容器镜像快速生成系统,包括计算机系统,其特征在于:所述计算机系统被编程以执行权利要求1~8中任意一项所述容器Dockerfile快速生成方法的步骤或者权利要求9所述容器镜像快速生成方法的步骤。
CN201810145672.XA 2018-02-12 2018-02-12 一种容器Dockerfile、容器镜像快速生成方法及系统 Active CN108415795B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201810145672.XA CN108415795B (zh) 2018-02-12 2018-02-12 一种容器Dockerfile、容器镜像快速生成方法及系统
PCT/CN2018/116558 WO2019153829A1 (zh) 2018-02-12 2018-11-21 一种容器Dockerfile、容器镜像快速生成方法及系统
US16/618,402 US11656893B2 (en) 2018-02-12 2018-11-21 Container dockerfile and container mirror image quick generation methods and systems

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 true CN108415795A (zh) 2018-08-17
CN108415795B 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)

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614117A (zh) * 2018-11-20 2019-04-12 山东超越数控电子股份有限公司 一种Linux系统镜像的构建方法和系统、Linux系统镜像
CN109739619A (zh) * 2018-12-12 2019-05-10 咪咕文化科技有限公司 一种基于容器化应用的处理方法、装置及存储介质
CN109739616A (zh) * 2018-12-05 2019-05-10 国云科技股份有限公司 一种云平台容器镜像批量制作方法
WO2019153829A1 (zh) * 2018-02-12 2019-08-15 人和未来生物科技(长沙)有限公司 一种容器Dockerfile、容器镜像快速生成方法及系统
CN110704098A (zh) * 2019-09-29 2020-01-17 科大国创软件股份有限公司 一种根据应用包特征自动生成容器镜像的智能打包方法
EP3640831A1 (en) * 2018-10-17 2020-04-22 Accenture Global Solutions Limited Container image vulnerability reduction
CN111078358A (zh) * 2019-12-05 2020-04-28 中车株洲电力机车有限公司 一种基于软件容器的试验数据处理方法及系统
CN111104113A (zh) * 2019-12-04 2020-05-05 紫光云(南京)数字技术有限公司 Docker镜像自动生成方法
CN111190687A (zh) * 2019-11-28 2020-05-22 安超云软件有限公司 一种容器镜像的构建方法、装置、设备及存储介质
CN111198744A (zh) * 2018-11-16 2020-05-26 中标软件有限公司 自动化应用程序容器化和镜像备份发布的方法
CN112052446A (zh) * 2020-09-14 2020-12-08 北京数字认证股份有限公司 密码单元创建方法、数据处理方法、装置及电子设备
CN112099917A (zh) * 2020-09-08 2020-12-18 中国电力科学研究院有限公司 调控系统容器化应用运行管理方法、系统、设备及介质
CN112416737A (zh) * 2019-08-21 2021-02-26 广州虎牙科技有限公司 一种容器的测试方法、装置、设备和存储介质
CN112835594A (zh) * 2021-01-15 2021-05-25 深圳行云创新科技有限公司 基于Kubernetes的镜像构建方法及其构建系统
CN113204410A (zh) * 2021-05-31 2021-08-03 平安科技(深圳)有限公司 集装箱式本地化部署方法、系统、设备及存储介质
CN113342359A (zh) * 2021-05-13 2021-09-03 烽火通信科技股份有限公司 容器镜像文件智能生成方法、装置、设备及存储介质
CN114047938A (zh) * 2022-01-11 2022-02-15 北京云歌科技有限责任公司 一种构建镜像的方法、装置、设备及可读存储介质
CN114217908A (zh) * 2022-02-23 2022-03-22 广州趣丸网络科技有限公司 容器启动方法、系统、装置及设备
CN114595034A (zh) * 2022-03-07 2022-06-07 中南大学 一种容器镜像体积缩小方法、存储器及装置
CN114721783A (zh) * 2022-05-16 2022-07-08 龙芯中科技术股份有限公司 资源文件提取方法、装置、电子设备及存储介质
US11429596B2 (en) 2020-04-20 2022-08-30 International Business Machines Corporation Update for configuration file
WO2022199136A1 (zh) * 2021-03-23 2022-09-29 华为云计算技术有限公司 应用改造方法、系统、集群、介质及程序产品
CN115329343A (zh) * 2022-08-23 2022-11-11 武汉能量云计算科技有限公司 一种信息安全漏洞的处理方法及系统
CN115454572A (zh) * 2022-09-20 2022-12-09 北京志凌海纳科技有限公司 基于Docker工具构建虚拟机磁盘镜像的方法及系统
CN115828231A (zh) * 2022-10-28 2023-03-21 广州汽车集团股份有限公司 应用程序运行方法、装置、车辆以及存储介质
US20230091587A1 (en) * 2021-09-17 2023-03-23 Electronics And Telecommunications Research Institute Docker image creation apparatus and method
US11748153B2 (en) 2020-11-25 2023-09-05 International Business Machines Corporation Anticipated containerized infrastructure used in performing cloud migration
US12026493B2 (en) * 2021-09-17 2024-07-02 Electronics And Telecommunications Research Institute Docker image creation apparatus and method

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN110806876B (zh) * 2019-10-31 2023-12-05 深圳忆联信息系统有限公司 基于Slitaz的轻量级Linux系统定制方法、装置计算机设备及存储介质
CN111221541A (zh) * 2019-12-26 2020-06-02 曙光信息产业(北京)有限公司 集群并行程序部署方法以及装置
CN111610989B (zh) * 2020-06-17 2023-09-29 中国人民解放军国防科技大学 一种面向离线容器云环境的应用发布/更新方法及系统
US11520573B2 (en) * 2020-07-08 2022-12-06 Vmware, Inc. Guided application rollback and migration
CN112084391B (zh) * 2020-09-08 2024-02-09 中国平安人寿保险股份有限公司 依赖包信息的获取方法、装置、设备及计算机介质
CN112947949A (zh) * 2020-09-22 2021-06-11 深圳市明源云科技有限公司 应用程序安装方法、装置及电子设备
CN113821219A (zh) * 2020-11-16 2021-12-21 北京沃东天骏信息技术有限公司 一种实现应用程序容器化的方法及系统
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
KR102459269B1 (ko) * 2020-11-19 2022-10-26 숭실대학교 산학협력단 이진 분석을 수행하는 소프트웨어 패키징 장치, 방법 및 이를 수행하기 위한 프로그램이 기록된 기록매체
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 中科曙光(南京)计算技术有限公司 一种基于深度学习的大数据一体机容器集群风险预测方法
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
US11836202B2 (en) 2021-02-24 2023-12-05 Open Weaver Inc. Methods and systems for dynamic search listing ranking of software components
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
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
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
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
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 烽火通信科技股份有限公司 远端容器镜像应用方法、系统及设备
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容器自动重建方法、终端设备及存储介质
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
CN114461271B (zh) * 2022-04-12 2022-06-21 梯度云科技(北京)有限公司 一种节省存储空间的容器镜像打包方法及装置
US11954474B2 (en) 2022-06-14 2024-04-09 International Business Machines Corporation Generating compliant container images via embeddings
US20240069883A1 (en) * 2022-08-31 2024-02-29 Red Hat, Inc. Deriving a container from a package set
CN116610330A (zh) * 2022-11-29 2023-08-18 天翼数字生活科技有限公司 对iOS开发第三方依赖进行快速搭建的方法和系统
CN115562690B (zh) * 2022-12-05 2023-04-18 杭州未名信科科技有限公司 基于Docker容器的算法服务处理方法、装置及介质
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 (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140208320A1 (en) * 2013-01-24 2014-07-24 International Business Machines Corporation Creating a virtual resource package
CN105653449A (zh) * 2015-12-28 2016-06-08 湖南蚁坊软件有限公司 一种基于容器虚拟化的持续集成方法
CN105867955A (zh) * 2015-09-18 2016-08-17 乐视云计算有限公司 一种应用程序部署系统及部署方法
US20160350081A1 (en) * 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
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 西安电子科技大学 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
CN107491329A (zh) * 2017-08-04 2017-12-19 上海携程商务有限公司 Docker镜像构建方法、设备、存储介质以及电子装置
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应用一键发布方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
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
CN104991815B (zh) * 2015-06-19 2019-01-18 北京奇虎科技有限公司 Docker容器的管理方法和系统
US9639558B2 (en) * 2015-09-17 2017-05-02 International Business Machines Corporation Image building
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
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、容器镜像快速生成方法及系统

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140208320A1 (en) * 2013-01-24 2014-07-24 International Business Machines Corporation Creating a virtual resource package
US20160350081A1 (en) * 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
CN105867955A (zh) * 2015-09-18 2016-08-17 乐视云计算有限公司 一种应用程序部署系统及部署方法
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 西安电子科技大学 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
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)

* Cited by examiner, † Cited by third party
Title
匡宏宇: "基于代码依赖分析的软件可追踪技术研究", 《中国博士学位论文全文数据库信息科技辑》 *
袁忠良: "容器云计算平台关键技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019153829A1 (zh) * 2018-02-12 2019-08-15 人和未来生物科技(长沙)有限公司 一种容器Dockerfile、容器镜像快速生成方法及系统
US11656893B2 (en) 2018-02-12 2023-05-23 Genetalks Bio-Tech (Changsha) Co., Ltd. Container dockerfile and container mirror image quick generation methods and systems
EP3640831A1 (en) * 2018-10-17 2020-04-22 Accenture Global Solutions Limited Container image vulnerability reduction
US10936725B2 (en) 2018-10-17 2021-03-02 Accenture Global Solutions Limited Container image vulnerability reduction
CN111198744B (zh) * 2018-11-16 2023-05-30 中标软件有限公司 自动化应用程序容器化和镜像备份发布的方法
CN111198744A (zh) * 2018-11-16 2020-05-26 中标软件有限公司 自动化应用程序容器化和镜像备份发布的方法
CN109614117A (zh) * 2018-11-20 2019-04-12 山东超越数控电子股份有限公司 一种Linux系统镜像的构建方法和系统、Linux系统镜像
CN109739616A (zh) * 2018-12-05 2019-05-10 国云科技股份有限公司 一种云平台容器镜像批量制作方法
CN109739619A (zh) * 2018-12-12 2019-05-10 咪咕文化科技有限公司 一种基于容器化应用的处理方法、装置及存储介质
CN112416737A (zh) * 2019-08-21 2021-02-26 广州虎牙科技有限公司 一种容器的测试方法、装置、设备和存储介质
CN112416737B (zh) * 2019-08-21 2024-03-01 广州虎牙科技有限公司 一种容器的测试方法、装置、设备和存储介质
CN110704098B (zh) * 2019-09-29 2023-05-23 科大国创软件股份有限公司 一种根据应用包特征自动生成容器镜像的智能打包方法
CN110704098A (zh) * 2019-09-29 2020-01-17 科大国创软件股份有限公司 一种根据应用包特征自动生成容器镜像的智能打包方法
CN111190687A (zh) * 2019-11-28 2020-05-22 安超云软件有限公司 一种容器镜像的构建方法、装置、设备及存储介质
CN111190687B (zh) * 2019-11-28 2023-06-30 安超云软件有限公司 一种容器镜像的构建方法、装置、设备及存储介质
CN111104113A (zh) * 2019-12-04 2020-05-05 紫光云(南京)数字技术有限公司 Docker镜像自动生成方法
CN111078358A (zh) * 2019-12-05 2020-04-28 中车株洲电力机车有限公司 一种基于软件容器的试验数据处理方法及系统
CN111078358B (zh) * 2019-12-05 2023-09-05 中车株洲电力机车有限公司 一种基于软件容器的试验数据处理方法及系统
US11429596B2 (en) 2020-04-20 2022-08-30 International Business Machines Corporation Update for configuration file
CN112099917A (zh) * 2020-09-08 2020-12-18 中国电力科学研究院有限公司 调控系统容器化应用运行管理方法、系统、设备及介质
CN112099917B (zh) * 2020-09-08 2022-02-11 中国电力科学研究院有限公司 调控系统容器化应用运行管理方法、系统、设备及介质
CN112052446A (zh) * 2020-09-14 2020-12-08 北京数字认证股份有限公司 密码单元创建方法、数据处理方法、装置及电子设备
US11748153B2 (en) 2020-11-25 2023-09-05 International Business Machines Corporation Anticipated containerized infrastructure used in performing cloud migration
CN112835594A (zh) * 2021-01-15 2021-05-25 深圳行云创新科技有限公司 基于Kubernetes的镜像构建方法及其构建系统
WO2022199136A1 (zh) * 2021-03-23 2022-09-29 华为云计算技术有限公司 应用改造方法、系统、集群、介质及程序产品
CN113342359A (zh) * 2021-05-13 2021-09-03 烽火通信科技股份有限公司 容器镜像文件智能生成方法、装置、设备及存储介质
CN113204410B (zh) * 2021-05-31 2024-01-30 平安科技(深圳)有限公司 集装箱式本地化部署方法、系统、设备及存储介质
CN113204410A (zh) * 2021-05-31 2021-08-03 平安科技(深圳)有限公司 集装箱式本地化部署方法、系统、设备及存储介质
US12026493B2 (en) * 2021-09-17 2024-07-02 Electronics And Telecommunications Research Institute Docker image creation apparatus and method
US20230091587A1 (en) * 2021-09-17 2023-03-23 Electronics And Telecommunications Research Institute Docker image creation apparatus and method
CN114047938A (zh) * 2022-01-11 2022-02-15 北京云歌科技有限责任公司 一种构建镜像的方法、装置、设备及可读存储介质
CN114217908A (zh) * 2022-02-23 2022-03-22 广州趣丸网络科技有限公司 容器启动方法、系统、装置及设备
CN114595034A (zh) * 2022-03-07 2022-06-07 中南大学 一种容器镜像体积缩小方法、存储器及装置
CN114721783B (zh) * 2022-05-16 2022-08-26 龙芯中科技术股份有限公司 资源文件提取方法、装置、电子设备及存储介质
CN114721783A (zh) * 2022-05-16 2022-07-08 龙芯中科技术股份有限公司 资源文件提取方法、装置、电子设备及存储介质
CN115329343A (zh) * 2022-08-23 2022-11-11 武汉能量云计算科技有限公司 一种信息安全漏洞的处理方法及系统
CN115454572A (zh) * 2022-09-20 2022-12-09 北京志凌海纳科技有限公司 基于Docker工具构建虚拟机磁盘镜像的方法及系统
CN115828231A (zh) * 2022-10-28 2023-03-21 广州汽车集团股份有限公司 应用程序运行方法、装置、车辆以及存储介质

Also Published As

Publication number Publication date
CN108415795B (zh) 2019-04-05
WO2019153829A1 (zh) 2019-08-15
US20200293354A1 (en) 2020-09-17
US11656893B2 (en) 2023-05-23

Similar Documents

Publication Publication Date Title
CN108415795B (zh) 一种容器Dockerfile、容器镜像快速生成方法及系统
Morris Infrastructure as code
US10474438B2 (en) Intelligent cloud engineering platform
Butler et al. User's guide to the p4 programming system
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
US10585785B2 (en) Preservation of modifications after overlay removal from a container
Siddiqui et al. Comprehensive analysis of container technology
Zhu et al. If docker is the answer, what is the question?
Liu et al. Building a platform for machine learning operations from open source frameworks
Suresh et al. Building scalable and flexible cluster managers using declarative programming
Weder et al. Deployable self-contained workflow models
Oliveira et al. Delivering software with agility and quality in a cloud environment
Nüst et al. The rockerverse: packages and applications for containerization with r
Fortier et al. Dyninka: a FaaS framework for distributed dataflow applications
Biradar et al. Build minimal docker container using golang
US12008353B2 (en) Parsing tool for optimizing code for deployment on a serverless platform
Wolf et al. Supporting component-based failover units in middleware for distributed real-time and embedded systems
Sethi et al. Rapid deployment of SOA solutions via automated image replication and reconfiguration
US20130066622A1 (en) Simulation of static members and parameterized constructors on an interface-based api
Wettinger Gathering solutions and providing apis for their orchestration to implement continuous software delivery
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
Bouraqadi-Saâdani et al. A reflective infrastructure for coarse-grained strong mobility and its tool-based implementation
Goethals Scalable and Flexible Low-Resource Service Orchestration for Enabling Smart Cities
Mai Building High Availability Infrastructure in Cloud

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