CN114047938A - 一种构建镜像的方法、装置、设备及可读存储介质 - Google Patents

一种构建镜像的方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN114047938A
CN114047938A CN202210026975.6A CN202210026975A CN114047938A CN 114047938 A CN114047938 A CN 114047938A CN 202210026975 A CN202210026975 A CN 202210026975A CN 114047938 A CN114047938 A CN 114047938A
Authority
CN
China
Prior art keywords
mirror image
layout
preset
python
dependent
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
CN202210026975.6A
Other languages
English (en)
Other versions
CN114047938B (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.)
Beijing Yunge Technology Co ltd
Original Assignee
Beijing Yunge Technology 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 Beijing Yunge Technology Co ltd filed Critical Beijing Yunge Technology Co ltd
Priority to CN202210026975.6A priority Critical patent/CN114047938B/zh
Publication of CN114047938A publication Critical patent/CN114047938A/zh
Application granted granted Critical
Publication of CN114047938B publication Critical patent/CN114047938B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明公开一种构建镜像的方法、装置、设备及可读存储介质,属于计算机、容器技术领域,特别涉及一种构建镜像的方法,包括:打包基础镜像;按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;为已下载的镜像设置预设元素,并配置预设元素索引信息;将目标布局发送至镜像仓库中。采用本发明方法不依赖守护进程,权限要求低,只需要指定基本的参数就能够运行,使用简单,多次构建的重复操作少,运行速度快,不需要运行容器,又通过复制代替了下载和安装依赖包,大大节省了下载和安装依赖包的过程的时间,节约时间成本。

Description

一种构建镜像的方法、装置、设备及可读存储介质
技术领域
本发明属于计算机、容器技术领域,特别涉及一种构建镜像的方法、装置、设备及可读存储介质。
背景技术
容器是与系统其他部分隔离开的一系列进程,其包含了代码及其所有的依赖项,使得软件代码能够在任何环境和任何基础架构上一致地移动和运行。容器因其模块化、轻量化的优点,已经成为在云计算领域被广泛采用的的标准技术。
镜像是容器的模板,其包含了运行容器所需要的一切内容,包括代码、运行时、系统工具、系统库和设置。镜像和容器是静态和动态的关系,以镜像为模板可以启动一个运行中的容器,以容器的当前状态快照也可以生成一个镜像。
本发明人经研究发现,现有技术中,把应用程序打包成镜像的 Source to image(以下简称 S2I)时,必须在具有 Docker 守护进程的环境中运行。但是在应用场景中,一部分环境里没有 Docker 守护进程,也有一部分环境出于安全或者权限管理的考虑,不允许用户使用 Docker 守护进程,进而导致在这些环境中无法打包应用程序。
发明内容
为了至少解决上述技术问题,本发明提供了一种文本联系实体提取方法、装置、设备及可读存储介质。
根据本发明第一方面,提供了一种构建镜像的方法,包括:
打包基础镜像;
按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;
为已下载的镜像设置预设元素,并配置预设元素索引信息;
将目标布局发送至镜像仓库中。
进一步的,
所述打包基础镜像,包括:
准备运行环境,在提供基础镜像及其用于制作镜像的源码文件的环境中,根据需求信息定制基础镜像;
所述基础镜像中包括,预设开发环境和应用场景。
进一步的,
所述根据需求信息定制基础镜像,包括:
获取用户设置的需求信息,根据需求信息定制基础镜像。
进一步的,
所述按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局,包括:
按照布局描述文件的格式下载镜像,在布局描述文件中以增设层块的方式设置应用程序及依赖包;
在所述预设布局为OCI布局描述文件时,按照OCI布局描述文件的格式下载镜像,在OCI布局描述文件中增设一个新的层块,所述新的层块中至少包括Python应用程序及必要的依赖包;
具体包括:在预先配置好Python包的基础上还可以从当前环境里获取依赖的Python包;
当用户选择从当前环境获取依赖的Python包时,T9k Python Builder检测应用程序所在的文件夹,通过以下检查来获取依赖包的信息,包括检查是否有表示依赖项的requirements.txt,以及是否使用了其他依赖管理工具,包括:Pip,Poetry;
如果文件夹中没有requirements.txt,、通过找到的依赖管理工具来生成requirements.txt,包括:pip freeze和poetry export -f requirements.txt;
在获取到requirements.txt之后,利用T9k Python Builder从当前环境的Python路径中查找对应的依赖包,将Python应用程序和这些依赖包打包形成新的 layer,插入到基础镜像中,使这些依赖包优先被Python调用。
进一步的,
所述为已下载的镜像设置预设元素,包括:
创建新的配置,将增设的依赖包路径添加至环境变量中,允许设置入口点,允许设置需要的环境变量。
进一步的,
所述配置预设元素索引信息,包括:
修改预设元素对应的挂载列表,将新的层块插入新的镜像中。
进一步的,
所述将目标布局发送至镜像仓库中,包括:
将增设的依赖包及应用程序的布局作为目标布局传回至镜像仓库中。
根据本发明第二方面,提供一种构建镜像的装置,包括:
处理模块,用于打包基础镜像;
下载模块,按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;
配置模块,用于为已下载的镜像设置预设元素,并配置预设元素索引信息;
发送模块,用于将目标布局发送至镜像仓库中。
根据本发明第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,
所述处理器执行所述程序时实现如本发明的第一方面任一项所述方法的步骤。
根据本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序被执行时,能够实现本发明的第一方面任一项所述的方法。
本发明的有益效果:采用本发明方法可以在控制权限的Kubernetes环境中正常使用,不依赖 Docker 守护进程,并且权限要求低,不需要 root 权限就可以运行,不需要Dockerfile,只需要指定基本的参数就能够运行,使用简单,主要的运行时间在于下载基础镜像,运行速度快,不需要运行容器,又通过复制代替了下载和安装依赖包,大大节省了下载和安装依赖包的过程的时间,节约时间成本。
附图说明
本发明上述的和 / 或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1为本发明提供的一种构建镜像的方法流程图;
图2为本发明提供的一种构建镜像的装置结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
在本发明的第一方面,提供一种构建镜像的方法,如图1所示,包括:
步骤101:打包基础镜像;
在本发明中,准备运行环境,可以在提供基础镜像及其用于制作镜像的源码文件的环境中,根据设置的需求信息定制基础镜像。其中,基础镜像包括:预设开发环境和应用场景。预设开发环境为Python开发环境。进一步的,可以获取用户设置的需求信息,根据需求信息定制基础镜像。
在本发明的另一个实施例中,还可以预先在支持镜像的环境中定制基础镜像,并将基础镜像存储在全局镜像仓库中。
采用T9k Python Builder打包基础镜像时,可以根据需求信息定制匹配的基础镜像。T9k Python Builder提供了常见Python开发和应用场景的基础镜像及其Dockerfile,其中Dockerfile为用于制作镜像的源码文件,可以基于Dockerfile生成新的镜像,因此用户可以根据自己的需要定制对应的基础镜像。
步骤102:按照预设布局下载镜像,并在预设布局中增设对应的依赖包及应用程序,得到目标布局;
在本发明中,预设布局为布局描述文件,具体可以是OCI(Open ContainerInitiative)布局方式,按照布局描述文件的格式下载镜像,在布局描述文件中以增设层块的方式设置应用程序及依赖包。
进一步的,以OCI布局描述文件的格式下载镜像,在OCI布局描述文件中增设一个新的层块,该新的层块中至少包括Python应用程序及必要的依赖包。
在本发明的一个实施例中,可以预先在基础镜像中配置好所有依赖的Python包,以此在T9k Python Builder开发环境中使用。
在另一实施例中,结合开发场景的需要,在预先配置好Python包的基础上还可以从当前环境里获取依赖的 Python包。
当用户选择从当前环境获取依赖的Python包时,T9k Python Builder检测应用程序所在的文件夹,通过以下检查来获取依赖包的信息,包括检查是否有表示依赖项的requirements.txt,以及是否使用了其他依赖管理工具,如Pip,Poetry。
如果文件夹中没有requirements.txt,我们可以通过找到的依赖管理工具来生成requirements.txt,比如pip freeze和poetry export -f requirements.txt。
在获取到requirements.txt之后,T9k Python Builder从当前环境的Python路径(依据sys.path变量的值)中查找对应的依赖包,将Python应用程序和这些依赖包打包形成新的 layer,插入到基础镜像中。通过设置环境变量,使这些依赖包优先被Python调用。
本发明方法不需要运行容器和下载依赖包,处理速度快。缺点则是需要基础镜像使用的操作系统和架构与本地操作系统一致,否则包含二进制文件的Python包可能无法运行。
步骤103:为已下载的镜像设置预设元素,并配置预设元素索引信息;
本发明中,预设元素为config blob,其中,config文件中保存了文件系统的层级信息,每个层级的哈希值,以及历史信息,以及容器运行时需要的信息,如环境变量、工作目录、命令参数、挂载列表,指定了镜像在某个特定平台和系统的配置,其中,挂载列表。修改镜像对应的索引使用清单,其中,索引使用清单用于存储镜像的配置文件索引、层级、以及额外的注解信息,也就是说,索引使用清单中保存了很多和当前平台有关的信息。将新的层(即新的layer)插入到已下载的镜像中。
在本发明另一实施例中,创建一个新的配置来增加一些设置,使得最终的镜像可以直接在Kubernetes上作为一个Pod 运行。对新的配置设置包括:
将复制的Python依赖包的路径添加到环境变量Pythonpath 中,使这些包生效。
允许用户设置入口点,在镜像里直接启动应用程序。
允许用户设置需要的环境变量。
本方案通过这些设置,生成的镜像可以直接通过docker run new-image或者kubectl run app --image=new-image指令使用。以此方便用户使用最终的镜像,用户不需要对镜像内部结构具有任何了解。
步骤104:将目标布局发送至镜像仓库中。
在本发明中,具体可以将增设依赖包及应用程序的OCI布局传回至镜像仓库Docker Registry。本技术方案中通过采用这种方式,使得T9k Python Builder能够在不运行容器的前提下修改已有镜像。
在本发明另一实施例中,以Jupyter Notebook开发环境为例,进行说明:JupyterNotebook(https://jupyter.org/)是一个流行的Python开发环境。当通过Kubernetes提供jupyter notebook服务时,用户可以轻松地在云服务器上开发并测试Python程序。当程序开发完成之后,用户常常需要把它打包成一个镜像来使用。
此时,如果通过Docker来完成,用户就需要将云端的Python 程序下载到本地,准备一个Dockerfile,运行docker build生成镜像,最后将镜像上传到Docker Registry中以备使用。而T9k Python Builder作为一个可以集成到服务中的工具,可以帮助用户在每次更迭版本时,都可以直接在Kubernetes集群中使用T9k Python Builder来生成新的镜像。
在本发明另一实施例中,举例说明T9k Python Builder的使用方式如下:
Pack python application into docker image
Usage:
t9k python pack <dir> [flags]
Examples:
# Pack python application "foo" into docker image "example.com/name", with base image "example.com/bar:latest"
t9k python pack foo --output example.com/name --base-imageexample.com/bar:latest
# Pack python application "foo" into docker image "example.com/name", keep process files
t9k python pack foo --output example.com/name --keep-files
Flags:
--base-image string Set base docker image
--copy-packages Copy local python packages
--entrypoint string Entrypoint for new docker image
--env string Set env for new docker image
--keep-files Keep process files
-o, --output string Output image name
T9k Python Builder把Python App和相关的依赖包筛选后打包为镜像布局中新的一层(layer)。根据用户设置和原有的config创建新的config。最后创建新的Manifest,就得到了一个新的OCI镜像。
本发明在机器学习,大数据分析等领域中,使用Python程序进行大规模的计算是常见的需求。针对这样的使用场景,本发明提供的Python程序打包方法,可以在控制权限的Kubernetes环境中正常使用,不依赖Docker守护进程,并且权限要求低,不需要 root 权限就可以运行,不需要Dockerfile,只需要指定基本的参数就能够运行,使用简单,运行速度快。
在本发明第二方面,提供一种构建镜像的装置,如图2所示,包括:
处理模块201,用于打包基础镜像;
在本发明中,处理模块201用于准备运行环境,可以在提供基础镜像及其用于制作镜像的源码文件的环境中,根据设置的需求信息定制基础镜像。其中,基础镜像包括:预设开发环境和应用场景。预设开发环境为Python开发环境。进一步的,可以获取用户设置的需求信息,根据需求信息定制基础镜像。
在本发明的另一个实施例中,处理模块201还可以预先在支持镜像的环境中定制基础镜像,并将基础镜像存储在全局镜像仓库中。
具体的处理模块201采用T9k Python Builder打包基础镜像时,可以获取设置的需求信息,根据需求信息定制匹配的基础镜像。T9k Python Builder提供了常见Python开发和应用场景的基础镜像及其Dockerfile,其中Dockerfile为用于制作镜像的源码文件,可以基于Dockerfile生成新的容器,因此用户可以根据自己的需要定制对应的基础镜像。
下载模块202,按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;
在本发明中,预设布局为布局描述文件,具体可以是OCI(Open ContainerInitiative)布局方式,下载模块202按照布局描述文件的格式下载镜像,在布局描述文件中以增设层块的方式设置应用程序及依赖包。
进一步的,下载模块202具体以OCI布局描述文件的格式下载镜像,在OCI布局描述文件中增设一个新的层块,该新的层块中至少包括Python应用程序及必要的依赖包。
在本发明的一个实施例中,下载模块202可以预先在基础镜像中配置好所有依赖的Python包,以此在T9k Python Builder开发环境中使用。
在另一实施例中,下载模块202可以结合开发场景的需要,在预先配置好Python包的基础上还可以从当前环境里获取依赖的 Python包。
当用户选择从当前环境获取依赖的Python包时,T9k Python Builder检测应用程序所在的文件夹,通过以下检查来获取依赖包的信息,包括检查是否有表示依赖项的requirements.txt,以及是否使用了其他依赖管理工具,如Pip,Poetry。
如果文件夹中没有requirements.txt,我们可以通过找到的依赖管理工具来生成requirements.txt,比如pip freeze和poetry export -f requirements.txt。
在获取到requirements.txt之后,T9k Python Builder从本地的Python路径(依据sys.path变量的值)中查找对应的依赖包,将Python应用程序和这些依赖包打包形成新的layer,插入到基础镜像中。通过设置环境变量,使这些依赖包优先被Python调用。
本发明方法不需要运行容器和下载依赖包,处理速度快。缺点则是需要基础镜像使用的操作系统和架构与本地操作系统一致,否则包含二进制文件的Python包可能无法运行。
配置模块203,用于为已下载的镜像设置预设元素,并配置预设元素索引信息;
本发明中,预设元素为config blob,其中,config文件中保存了文件系统的层级信息,每个层级的哈希值,以及历史信息,以及容器运行时需要的信息,如环境变量、工作目录、命令参数、挂载列表,指定了镜像在某个特定平台和系统的配置,其中,挂载列表。修改镜像对应的索引使用清单,其中,索引使用清单用于存储镜像的配置文件索引、层级、以及额外的注解信息,也就是说,索引使用清单中保存了很多和当前平台有关的信息。将新的层(即新的layer)插入到已下载的镜像中。
在本发明另一实施例中,配置模块203创建一个新的配置来增加一些设置,使得最终的镜像可以直接在Kubernetes上作为一个 Pod运行。对新的配置设置包括:
将复制的Python依赖包的路径添加到环境变量Pythonpath 中,使这些包生效。
允许用户设置入口点,在镜像里直接启动应用程序。
允许用户设置需要的环境变量。
本方案通过这些设置,生成的镜像可以直接通过docker run new-image或者kubectl run app --image=new-image指令使用。以此方便用户使用最终的镜像,用户不需要对镜像内部结构具有任何了解。
发送模块204,用于将目标布局发送至镜像仓库中。
在本发明中,发送模块204具体可以将增设依赖包及应用程序的OCI布局传回至镜像仓库Registry。本技术方案中通过采用这种方式,使得T9k Python Builder能够在不运行容器的前提下修改已有镜像。
在本发明另一实施例中,以Jupyter Notebook开发环境为例,进行说明:JupyterNotebook(https://jupyter.org/)是一个流行的Python开发环境。当通过Kubernetes提供jupyter notebook服务时,用户可以轻松地在云服务器上开发并测试Python程序。当程序开发完成之后,用户常常需要把它打包成一个镜像来使用。
此时,如果通过Docker来完成,用户就需要将云端的Python 程序下载到本地,准备一个Dockerfile,运行docker build生成镜像,最后将镜像上传到Docker Registry中以备使用。而T9k Python Builder作为一个可以集成到服务中的工具,可以帮助用户在每次更迭版本时,都可以直接在Kubernetes集群中使用T9k Python Builder来生成新的镜像。
根据本发明第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,
所述处理器执行所述程序时实现如下任一项所述方法的步骤,包括:
打包基础镜像;
按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;
为已下载的镜像设置预设元素,并配置预设元素索引信息;
将目标布局发送至镜像仓库中。
进一步的,
所述打包基础镜像,包括:
准备运行环境,在提供基础镜像及其用于制作镜像的源码文件的环境中,根据需求信息定制基础镜像;
所述基础镜像中包括,预设开发环境和应用场景。
进一步的,
所述根据需求信息定制基础镜像,包括:
获取用户设置的需求信息,根据需求信息定制基础镜像。
进一步的,
所述按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局,包括:
按照布局描述文件的格式下载镜像,在布局描述文件中以增设层块的方式设置应用程序及依赖包。
进一步的,
所述为已下载的镜像设置预设元素,包括:
创建新的配置,将增设的依赖包路径添加至环境变量中,允许设置入口点,允许设置需要的环境变量。
进一步的,
所述配置预设元素索引信息,包括:
修改预设元素对应的挂载列表,将新的层块插入新的镜像中。
进一步的,
所述将目标布局发送至镜像仓库中,包括:
将增设的依赖包及应用程序的布局作为目标布局传回至镜像仓库中。
综上所述,本发明方法可以在控制权限的Kubernetes环境中正常使用,不依赖Docker守护进程,并且权限要求低,不需要root 权限就可以运行,不需要Dockerfile,只需要指定基本的参数就能够运行,使用简单,主要的运行时间在于下载基础镜像,运行速度快,不需要运行容器,又通过复制代替了下载和安装依赖包,大大节省了下载和安装依赖包的过程的时间,节约时间成本。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
应当理解,以上借助优选实施例对本发明的技术方案进行的详细说明是示意性的而非限制性的。本领域的普通技术人员在阅读本发明说明书的基础上可以对各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种构建镜像的方法,其特征在于,包括:
打包基础镜像;
按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;
为已下载的镜像设置预设元素,并配置预设元素索引信息;
将目标布局发送至镜像仓库中。
2.如权利要求1所述的方法,其特征在于,
所述打包基础镜像,包括:
准备运行环境,在提供基础镜像及其用于制作镜像的源码文件的环境中,根据需求信息定制基础镜像;
所述基础镜像中包括,预设开发环境和应用场景。
3.如权利要求2所述的方法,其特征在于,
所述根据需求信息定制基础镜像,包括:
获取用户设置的需求信息,根据需求信息定制基础镜像。
4.如权利要求1所述的方法,其特征在于,
所述按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局,包括:
按照布局描述文件的格式下载镜像,在布局描述文件中以增设层块的方式设置应用程序及依赖包;
在所述预设布局为OCI布局描述文件时,按照OCI布局描述文件的格式下载镜像,在OCI布局描述文件中增设一个新的层块,所述新的层块中至少包括Python应用程序及必要的依赖包;
具体包括:在预先配置好Python包的基础上还可以从当前环境里获取依赖的 Python包;
当用户选择从当前环境获取依赖的Python包时,T9k Python Builder检测应用程序所在的文件夹,通过以下检查来获取依赖包的信息,包括检查是否有表示依赖项的requirements.txt,以及是否使用了其他依赖管理工具,包括:Pip,Poetry;
如果文件夹中没有requirements.txt,、通过找到的依赖管理工具来生成requirements.txt,包括:pip freeze和poetry export -f requirements.txt;
在获取到requirements.txt之后,利用T9k Python Builder从当前环境的Python路径中查找对应的依赖包,将Python应用程序和这些依赖包打包形成新的 layer,插入到基础镜像中,使这些依赖包优先被Python调用。
5.如权利要求1所述的方法,其特征在于,
所述为已下载的镜像设置预设元素,包括:
创建新的配置,将增设的依赖包路径添加至环境变量中,允许设置入口点,允许设置需要的环境变量。
6.如权利要求1所述的方法,其特征在于,
所述配置预设元素索引信息,包括:
修改预设元素对应的挂载列表,将新的层块插入新的镜像中。
7.如权利要求1所述的方法,其特征在于,
所述将目标布局发送至镜像仓库中,包括:
将增设的依赖包及应用程序的布局作为目标布局传回至镜像仓库中。
8.一种构建镜像的装置,其特征在于,包括:
处理模块,用于打包基础镜像;
下载模块,按照预设布局下载镜像,并在所述预设布局中增设对应的依赖包及应用程序,得到目标布局;
配置模块,用于为已下载的镜像设置预设元素,并配置预设元素索引信息;
发送模块,用于将目标布局发送至镜像仓库中。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述程序时实现权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序,所述程序被执行时,能够实现如权利要求1-7任一项所述的方法。
CN202210026975.6A 2022-01-11 2022-01-11 一种构建镜像的方法、装置、设备及可读存储介质 Active CN114047938B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210026975.6A CN114047938B (zh) 2022-01-11 2022-01-11 一种构建镜像的方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210026975.6A CN114047938B (zh) 2022-01-11 2022-01-11 一种构建镜像的方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114047938A true CN114047938A (zh) 2022-02-15
CN114047938B CN114047938B (zh) 2023-05-26

Family

ID=80196184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210026975.6A Active CN114047938B (zh) 2022-01-11 2022-01-11 一种构建镜像的方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114047938B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114697313A (zh) * 2022-03-15 2022-07-01 浪潮云信息技术股份公司 一种基于镜像的文件下载方法
CN115562690A (zh) * 2022-12-05 2023-01-03 杭州未名信科科技有限公司 基于Docker容器的算法服务处理方法、装置及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107678756A (zh) * 2017-09-29 2018-02-09 千寻位置网络有限公司 一种基于Docker的Web应用一键发布方法
CN108415795A (zh) * 2018-02-12 2018-08-17 人和未来生物科技(长沙)有限公司 一种容器Dockerfile、容器镜像快速生成方法及系统
CN111078229A (zh) * 2019-12-20 2020-04-28 北京天融信网络安全技术有限公司 一种应用程序处理方法、装置、存储介质及电子设备
CN113127136A (zh) * 2019-12-30 2021-07-16 北京懿医云科技有限公司 Docker镜像生成方法及装置、存储介质、电子设备
WO2021217871A1 (zh) * 2020-04-28 2021-11-04 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
WO2021232845A1 (zh) * 2020-05-22 2021-11-25 国云科技股份有限公司 一种基于容器的镜像更新发布方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107678756A (zh) * 2017-09-29 2018-02-09 千寻位置网络有限公司 一种基于Docker的Web应用一键发布方法
CN108415795A (zh) * 2018-02-12 2018-08-17 人和未来生物科技(长沙)有限公司 一种容器Dockerfile、容器镜像快速生成方法及系统
US20200293354A1 (en) * 2018-02-12 2020-09-17 Genetalks Bio-Tech (Changsha) Co., Ltd. Container dockerfile and container mirror image quick generation methods and systems
CN111078229A (zh) * 2019-12-20 2020-04-28 北京天融信网络安全技术有限公司 一种应用程序处理方法、装置、存储介质及电子设备
CN113127136A (zh) * 2019-12-30 2021-07-16 北京懿医云科技有限公司 Docker镜像生成方法及装置、存储介质、电子设备
WO2021217871A1 (zh) * 2020-04-28 2021-11-04 平安科技(深圳)有限公司 微服务集群部署方法、装置、计算机设备及存储介质
WO2021232845A1 (zh) * 2020-05-22 2021-11-25 国云科技股份有限公司 一种基于容器的镜像更新发布方法及装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JINTAO ZHANG: "OCI与容器镜像构建", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1901845》, 16 November 2021 (2021-11-16), pages 1 - 8 *
曹明: "python项目代码打包成Docker镜像", 《HTTPS://WWW.CNBLOGS.COM/THINK90/ARTICLES/12370973.HTML》 *
曹明: "python项目代码打包成Docker镜像", 《HTTPS://WWW.CNBLOGS.COM/THINK90/ARTICLES/12370973.HTML》, 27 February 2020 (2020-02-27), pages 1 - 3 *
青梅煮酒123: "Python项目打包成docker镜像并发布运行", 《HTTPS://BLOG.CSDN.NET/QQ_27786919/ARTICLE/DETAILS/106780756》 *
青梅煮酒123: "Python项目打包成docker镜像并发布运行", 《HTTPS://BLOG.CSDN.NET/QQ_27786919/ARTICLE/DETAILS/106780756》, 16 June 2020 (2020-06-16), pages 1 - 4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114697313A (zh) * 2022-03-15 2022-07-01 浪潮云信息技术股份公司 一种基于镜像的文件下载方法
CN115562690A (zh) * 2022-12-05 2023-01-03 杭州未名信科科技有限公司 基于Docker容器的算法服务处理方法、装置及介质

Also Published As

Publication number Publication date
CN114047938B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
CN108037961B (zh) 一种应用程序配置方法、装置、服务器和存储介质
US9823915B1 (en) Software container format
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
CN114047938B (zh) 一种构建镜像的方法、装置、设备及可读存储介质
CN107438102B (zh) 一种云平台镜像制作系统及其实现方法
CN106663002B (zh) Rest服务源代码生成
CN106610853A (zh) 一种应用部署方法和装置
US7143405B2 (en) Methods and arrangements for managing devices
CN106874357B (zh) 一种Web应用的资源定制方法和装置
CN103324474A (zh) 基于Linux操作系统跨体系构造ISO的方法及模块
CN112769706B (zh) 组件化路由方法及系统
CN111949276B (zh) 一种基于容器方式自动部署应用程序的系统及方法
US20020091720A1 (en) Methods and arrangements for providing improved software version control in managed devices
CN110532016B (zh) 版本管理方法、版本更新方法和版本管理系统
CN111026439A (zh) 应用程序的兼容方法、装置、设备及计算机存储介质
CN112052011A (zh) 小程序的合包方法、装置、电子设备及介质
US20160283226A1 (en) Smart hashing to reduce server memory usage in a distributed system
CN116302354A (zh) 一种软件微服务容器化构建方法、装置、设备及介质
CN115344275A (zh) 操作系统的镜像文件生成方法、装置和计算机设备
US20210232562A1 (en) Container-image reproduction and debugging
US20180341475A1 (en) Just In Time Deployment with Package Managers
CN114035890A (zh) 一种基于容器技术的ci/cd服务部署方法、装置、设备及介质
CN113900674A (zh) 一种自动化部署方法、装置及存储介质
CN113741952A (zh) 一种软件包管理方法、装置、设备及介质
CN111949628B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100080 unit 53, floor 15, block B, No. 3 Danling street, Haidian District, Beijing

Applicant after: Beijing Vector Stack Technology Co.,Ltd.

Address before: 100080 unit 53, floor 15, block B, No. 3 Danling street, Haidian District, Beijing

Applicant before: Beijing Yunge Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant