KR20230041361A - 도커 이미지 생성 장치 및 방법 - Google Patents

도커 이미지 생성 장치 및 방법 Download PDF

Info

Publication number
KR20230041361A
KR20230041361A KR1020210124885A KR20210124885A KR20230041361A KR 20230041361 A KR20230041361 A KR 20230041361A KR 1020210124885 A KR1020210124885 A KR 1020210124885A KR 20210124885 A KR20210124885 A KR 20210124885A KR 20230041361 A KR20230041361 A KR 20230041361A
Authority
KR
South Korea
Prior art keywords
docker
partial
file
request
docker image
Prior art date
Application number
KR1020210124885A
Other languages
English (en)
Inventor
장수민
Original Assignee
한국전자통신연구원
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 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020210124885A priority Critical patent/KR20230041361A/ko
Priority to US17/836,039 priority patent/US20230091587A1/en
Publication of KR20230041361A publication Critical patent/KR20230041361A/ko

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/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

도커 이미지 생성 장치 및 방법이 개시된다. 본 발명의 일실시예에 따른 도커 이미지 생성 장치는 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성하고, 상기 부분 도커 파일을 이용하여 도커 이미지를 생성한다.

Description

도커 이미지 생성 장치 및 방법 {APPARATUS AND METHOD FOR GENERATING DOCKER IMAGE}
본 발명은 컨테이너 플랫폼 기술에 관한 것으로, 보다 상세하게는 도커 이미지 생성, 배포 및 관리 기술에 관한 것이다.
최근에 IT 서비스 응용들은 도커 이미지를 이용하여 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 매우 편리하게 운용되고 있다. 이처럼 도커 이미지를 통하여 다양한 백엔드 프로그램, 데이터베이스 서버, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화할 수 있고 일반 PC나, public cloud등 어디에서도 실행할 수 있습니다. 컨테이너를 많이 이용하는 기업인 구글은 모든 서비스들이 컨테이너로 동작하고 매주 수십억 개의 컨테이너를 구동하고 있다.
그러나 컨테이너 플랫폼을 운용 관리하는 과정에서 다양한 실행환경에 해당하는 도커 이미지를 생성하여 등록하는 과정이 응용 개발자가 응용 이미지를 만들기 위하여 필요한 각각의 패키지들을 추가하는 반복적인 작업을 해야만 한다. 이러한 반복적인 작업은 매우 비효율적이고 높은 관리 비용이 발생하는 문제점이 있다.
한편, 한국등록특허 제 10-2092458 호“서버리스 컴퓨팅 환경에서 가상화된 GPU 자원 지원 방법 및 시스템”는 클라이언트에서 도커 이미지를 원격으로 전송하기 위한 API(Application Programming Interface)를 생성하고, 도커 이미지 생성 요청에 의해 생성된 도커 이미지를 실행하고, 서버의 요청을 처리하기 위한 API와 명령을 구현하고, 클라이언트에서 API를 호출하는 명령을 구현하는 방법 및 그 시스템에 관하여 개시하고 있다.
본 발명은 컨테이너 서비스를 통하여 서로 다른 컴퓨팅 환경으로 이동하더라도 별도 추가 작업 없이 한번에 애플리케이션 구동이 가능하게 하는 것을 목적으로 한다.
또한, 본 발명은 컨테이너 플랫폼은 운용 관리하는 과정에서 발생되는 관리비용을 절감하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 도커 이미지 생성 장치는 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 상기 적어도 하나 이상의 프로그램은 사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성하고, 상기 부분 도커 파일을 이용하여 도커 이미지를 생성한다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트에 포함된 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트와 새로운 요청 패키지 리스트 간의 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보를 저장할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 도커 이미지 생성 방법은 도커 이미지 생성 장치의 도커 이미지 생성 방법에 있어서, 사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성하는 단계 및 상기 부분 도커 파일을 이용하여 도커 이미지를 생성하는 단계를 포함한다.
이 때, 상기 부분 도커 파일을 생성하는 단계는 상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트에 포함된 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거할 수 있다.
이 때, 상기 부분 도커 파일을 생성하는 단계는 상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트와 새로운 요청 패키지 리스트 간의 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거할 수 있다.
이 때, 상기 도커 이미지를 생성하는 단계는 상기 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석할 수 있다.
이 때, 상기 도커 이미지를 생성하는 단계는 상기 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보를 저장할 수 있다.
본 발명은 컨테이너 서비스를 통하여 서로 다른 컴퓨팅 환경으로 이동하더라도 별도 추가 작업 없이 한번에 애플리케이션 구동이 가능하게 할 수 있다.
또한, 본 발명은 컨테이너 플랫폼은 운용 관리하는 과정에서 발생되는 관리비용을 절감할 수 있다.
도 1은 본 발명의 일실시예에 따른 도커 이미지 배포 환경을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 부분 도커 파일을 이용한 도커 이미지 생성 과정을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 부분 모듈화를 통한 도커 이미지 생성을 위한 구성 요소를 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 부분 도커 파일의 구성을 나타낸 도면이다.
도 5는 본 발명의 일실시예에 따른 부분 도커 파일과 요청 리스트의 상호 종속성 처리 과정을 나타낸 도면이다.
도 6은 본 발명의 일실시예에 따른 부분 도커 파일 생성 과정을 나타낸 도면이다.
도 7은 본 발명의 일실시예에 따른 부분 도커 파일을 이용한 도커 이미지 생성 과정을 나타낸 도면이다.
도 8은 본 발명의 일실시예에 따른 도커 이미지 생성 방법을 나타낸 동작흐름도이다.
도 9는 도 8에 도시된 부분 도커 파일 생성 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 10은 도 8에 도시된 도커 이미지 생성 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 11는 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 도커 이미지 배포 환경을 나타낸 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 도커 이미지 생성을 위한 도커이미지 배포 환경을 나타낸 것을 알 수 있다. 도커(Docker)는 빌드 된 이미지를 서버에 배포하기 위해 직접 파일을 복사하지 않고, 도커 레지스트리(Docker registry) 사용하여 등록하는 Push 명령과 사용할 때 쓰는 Pull 명령어를 통하여 다양한 환경에서 배포 및 관리를 제공할 수 있다.
본 발명은 응용 프로그램이 구동할 이미지 생성을 위하여 기존에 이미지 생성을 위하여 사용한 도커 파일들을 부분 도커 파일(Partial Docker File)로 정의 및 저장하고 이들을 필요한 부분만을 조합하여 매우 다양한 스마트형 도커이미지 생성하기 위한 장치 및 방법을 제공할 수 있다.
도 2는 본 발명의 일실시예에 따른 부분 도커 파일을 이용한 도커 이미지 생성 과정을 나타낸 도면이다.
도 2를 참조하면, 부분 도커 파일(Partial Docker File)을 이용한 스마트한 도커 이미지 생성 과정을 나타낸 것을 알 수 있다.
일반적으로, 응용 서비스 개발자는 응용 컨테이너 생성을 위하여 Java, Pytorch, Kafka, Python, TensorFlow 등등 다양한 도커 파일을 필요할 때마다 각각 작성하여 사용할 수 있다. 예를 들어, 응용 개발자는 생성하고자 하는 컨테이너가 Java도 실행되고 Kafka 서버가 작동되도록 만든다면 각각 Java와 Kafka 관련된 패키지를 원하는 버전으로 설정하여 도커 파일을 새롭게 작성해야 한다. 그러나, 도 2에 도시된 바와 같이, 본 발명은 처음부터 도커 파일을 작성하는 것이 아니라 미리 작성된 도커 파일들 중에서 필요한 부분들을 조합하여 원하는 도커 파일을 생성할 수 있다. 이러한 방법을 통하여 다양한 이미지를 제공하지 않고 미리 선정된 몇 개의 이미지만을 제공함으로써 다양한 실행환경을 요구하는 응용 프로그램을 제공하지 못하는 매우 심각한 문제를 해결할 수 있다.
도 3은 본 발명의 일실시예에 따른 부분 모듈화를 통한 도커 이미지 생성을 위한 구성 요소를 나타낸 도면이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 도커 이미지 생성 장치 및 방법을 구현하기 위해 필요한 구성 요소들을 나타낸 것을 알 수 있다. 도 3에서 도시된 주요 구성 요소들은 응용 서비스를 실행하기 위해 필요한 요청패키지(Requirement)들과 실행 환경 변수에 해당하는 Env Parameter, 그리고 기존 도커 파일을 생성할 때 사용하는 Base Image와 같은 역할을 하는 부분 도커 파일(Partial Docker File)로 구성된다. 추가적으로, 종속성 데이터(Dependency Data)는 여러 가지 요청패키지(Requirement) 설치과정에서 요청패키지(Requirement) 간의 종속성 정보를 포함할 수 있다. 마지막으로 중앙에 위치한 지능형 도커 파일 생성기(Intelligent Docker File Maker)는 종속성 데이터(Dependency Data)를 참조하여 요청패키지(Requirement), 실행 환경 변수(Env Parameter), 부분 도커 파일(Partial Docker File)의 조합을 통하여 최종적으로 도커 파일(Docker File)을 생성할 수 있다. 도커 파일(Docker File)을 만들어진 이후, 도커 이미지를 생성하여 Push 명령어를 통해 이미지 저장소에 저장하고, 이미지 저장소에서 Pull 명령어를 통해 도커 이미지를 실행할 수 있다.
도 4는 본 발명의 일실시예에 따른 부분 도커 파일의 구성을 나타낸 도면이다.
도 4를 참조하면, 기존에 사용되는 기본 도커 파일들을 부분 부분 조합하여 새로운 도커 파일인 부분 도커 파일(Partial Docker File)을 생성하는 것을 알 수 있다.
부분 도커 파일(Partial Docker File)은 부분 도커 파일 조합(Partial Docker File Combination Set), 요청패키지(Requirement) List, 실행 환경(Env) List로 구성될 수 있다.
부분 도커 파일 조합(Partial Docker File Combination Set)은 기본 부분 도커 파일(Base Partial Docker File)을 정의하지 않거나 적어도 하나 이상 포함할 수 있는 기본 부분 도커 파일 리스트(Base Partial Docker File List)와 부분 도커 파일(Partial Docker File)을 정의하지 않거나 하나 이상 포함할 수 있는 부분 도커 파일 리스트(Partial Docker File List)의 조합을 포함하는 것을 알 수 있다.
이 때, 기본 부분 도커 파일(Base Partial Docker File)은 요청패키지(Requirement) List 및 Env List 를 포함하는 것을 알 수 있다.
이 때, 부분 도커 파일(Partial Docker File)은 요청패키지(Requirement) List 및 Env List 를 포함하고, 추가로 부분 도커 파일 조합(Partial Docker File Combination Set)이 더 포함하는 것을 알 수 있다.
기본 부분 도커 파일(Base Partial Docker File)은 기존의 부분 도커 파일(Partial Docker File)을 조합하지 않고 패키지 리스트, 실행 환경 리스트만으로 구성한 부분 도커 파일(Partial Docker File)에 상응할 수도 있다.
그러나, 부분 도커 파일(Partial Docker File)는 부분 도커 파일조합(Partial Docker File Combination Set)이 포함하지 않을 수도 있다.
즉, 부분 도커 파일조합(Partial Docker File Combination Set)이 포함하지 않는 것은 기본 부분 도커 파일(Base Partial Docker File)을 상응하는 것으로, 기본부분 도커는 파일(Base Partial Docker File)는 부분 도커 파일(Partial Docker File)에 상응할 수도 있다.
또한, 응용프로그램의 실행에 필요한 요청패키지(Requirement)는 Name, Compare Operator, Version, Install Version 및 Install Statement 를 포함하는 것을 알 수 있다.
Compare Operator는 설치될 요청패키지(Requirement)의 Version에 대한 특정 Version 보다 크거나 같다 아니면 적은 것을 표시하는 비교 연산자이다.
Install Version 및 Install Statement는 실질적으로 설치된 버전과 설치를 위한 문구를 포함할 수 있다.
지능형 도커 파일 생성기(Intelligent Docker File Maker)는 부분 도커 파일(Partial Docker File)의 부분 도커 파일 조합(Partial Docker File Combination Set)을 통하여 포함된 요청패키지(Requirement) 들을 상호 종속성을 비교하여 중복된 요청패키지(Requirement)을 제거하여 최적화된 도커 파일(Docker File)을 생성할 수 있다.
최종적으로, 지능형 도커 파일 생성기(Intelligent Docker File Maker)는 부분 도커 파일(Partial Docker File)을 도커 파일(Docker File)로 변환하는 것을 알 수 있다.
즉, 하나의 부분 도커 파일(Partial Docker File)도 이미지를 생성할 수 있는 완전한 도커 파일(Docker File)로 변환될 수 있다.
[수도 코드 1]
name: test
os:
type: ubuntu
version: 18.04
version: 1.0
partial docker:
- base_http_server == 1.0
- base_python == 2.7
requirement:
nginx >= 1.18:
nginx=1.19.2:
- apt-get update
- apt-get install -y gcc g++ libpcre3 libpcre3-dev libssl-dev
javajdk == 8:
javajdk=8: apt-get install -y openjdk-8-jdk-headless
env:
- WORKDIR /etc/nginx
상기 수도 코드 1은 부분 도커 파일(Partial Docker File)을 yaml 형식으로 정의한 것을 알 수 있다. 부분 도커 파일 yaml을 구성하는 요소들은 name, os, os의 type, os의 version, version, partial ocker, requirement 및 evn 을 포함할 수 있다.
name 은 부분 도커의 이름을 나타낼 수 있다.
os는 부분 도커가 사용되는 os 정의 부분을 나타낼 수 있다.
os의 type은 OS 플랫폼을 나타낼 수 있다.
os의 version은 OS 버전을 나타낼 수 있다.
version은 부분 도커의 버전을 나타낼 수 있다.
partial docker는 참조하는 부분 도커 버전(리스트)을 나타낼 수 있다.
requirement는 해당되는 부분 도커를 사용하게 될 경우, 필수 요소 및 그 설치 방법을 나타낼 수 있다.
evn는 실행 환경 설정 (리스트)를 나타낼 수 있다.
수도 코드 1을 살펴보면 partial의 base_http_server == 1.0과 base_python == 2.7은 base_http_server라는 부분 도커 파일(Partial Docker File)의 버전이 1.0과 base_python 라는 부분 도커 파일(Partial Docker File)의 버전이 2.7을 조합한다는 것을 의미하며 요청 패키지(Requirement) 의 경우는 "nginx >= 1.18"는 버전이 1.18이상이면 된다는 걸 의미한다. 만약에 작성 중인 부분도커파일(Partial Docker File)의 nginx는 "nginx >= 1.18" 이고 base_http_server에 포함된 요청패키지(Requirement) 의 nginx는 " nginx >= 2.0"이면, base_http_server의 nginx부분을 설치하는 걸 의미한다. 만약, base_http_server의 nginx가 "nginx == 1.7"이면 이 조건이 맞지 않기 때문에 실패가 되어서 base_http_server의 1.0을 사용할 수가 없다.
도 5는 본 발명의 일실시예에 따른 부분 도커 파일 조합에 포함된 요청 패키지 리스트 간의 상호 종속성 처리 과정을 나타낸 도면이다.
도 5를 참조하면, 부분 도커 파일 조합에 포함된 요청 패키지 리스트 간의 상호 종속성 비교를 위한 집합을 만드는 과정을 나타낸 것을 알 수 있다.
부분 도커 파일 조합(Partial Docker File Combination Set)에 포함된 기존 요구 패키지(Previous Requirement) List와 현재 작성 중인 부분 도커 파일(Partial Docker File)에 포함된 새로운 요청패키지(New Requirement) List 간의 상호 종속성을 비교하는 과정을 나타낸 것을 알 수 있다.
이 때, 요청패키지(Requirement)의 비교 연산자는 다음과 같이 정의할 수 있다.
== : 같아야 한다.
=> : 같거나 커야 한다.
<= : 작거나 같아야 한다.
< : 작아야 한다.
> : 커야 한다.
종속성 비교를 통한 처리는 추가될 기존 부분 도커 파일의 요청 패키지들(Previous Requirement)과 새로이 추가되는 부분 도커 파일의 요청 패키지들(New Requirement)을 교집합 하여 중복되는 부분을 서로 비교하여 추가하거나 삭제할 수 있다. 단, 비교하여 중복되지 않는 교집합 이외의 기존요청 패키지들과 새로운 요구 패키지들은 모두 포함될 수 있다.
예를 들어, 중복된 새로운 요청 패키지 (New Requirement 의 Name A의 비교 연산자 (Compare Operator) 가 "==" 이면 중복된 추가될 기존요청 패키지들 중에 Name A에 해당하는 기존요청 패키지들은 모두 삭제하고 Name A의 새로운 요청 패키지 (New Requirement) 만 추가할 수 있다.
그 외 중복된 새로운 요청 패키지 (New Requirement) 의 Name A 비교 연산자가 ">= or <= or < or >" 이면 비교연산자(Compare Operator)를 만족하는 Name A 에 해당하는 기존 요청 패키지들(Previous Requirement)과 새로운 요청 패키지들(New Requirement) 중에 가장 버전(Version)이 높은 요청 패키지를 추가하고 그 나머지는 삭제할 수 있다.
도 6은 본 발명의 일실시예에 따른 부분 도커 파일 생성 과정을 나타낸 도면이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 도커 이미지 생성 장치는 지능형 도커 파일 생성기(Intelligent Docker File Maker)(100)에 상응할 수 있다.
이 때, 본 발명의 일실시예에 따른 지능형 도커 파일 생성기(Intelligent Docker File Maker)(100)는 도커 파일 생성기(Docker File Maker)(110)및 도커 이미지 분석기(Docker Image Analyzer)(120)를 포함할 수 있다.
도커 파일 생성기(Docker File Maker)는 부분 도커 파일 조합 기(Partial Docker File Combinator), 종속성 검증기(Dependency Verification), 부분 도커 파일 생성기(Partial Docker File Generator) 및 도커 파일 변환기(Docker File Convertor)를 포함할 수 있다.
본 발명의 일실시예에 따른 부분 도커 파일 생성 과정은 먼저 지능형 도커 파일 생성기 클라이언트(10)가 Client 프로그램을 통하여 지능형 도커 파일 생성기(Intelligent Docker File Maker)에 명령어들을 전송할 수 있다(①).
이 때, 부분 도커 파일 조합 기(Partial Docker File Combinator)는 부분 도커 파일(Partial Docker File), 요청패키지(Requirement) List, 실행 환경(Env) List를 조합할 수 있다(②).
이 때, 종속성 검증기(Dependency Verification)는 조합된 부분 도커 파일을 검증할 수 있다(③).
이 때, 부분 도커 파일 생성기(Partial Docker File Generator)는 검증이 완료된 부분 도커 파일(Partial Docker File)을 통하여 부분 도커 파일(Partial Docker File)을 생성할 수 있다(④).
이 때, 부분 도커 파일 생성기(Partial Docker File Generator)는 Push 명령어를 실행하여 생성된 부분 도커 파일(Partial Docker File)을 부분 도커 파일 저장소 (Partial Docker File Repository)(20)에 저장할 수 있다(⑤).
도 7은 본 발명의 일실시예에 따른 부분 도커 파일을 이용한 도커 이미지 생성 과정을 나타낸 도면이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 부분 도커 파일을 이용한 도커 이미지 생성 과정은 먼저 지능형 도커 파일 생성기 클라이언트(10)가 Client 프로그램을 통하여 지능형 도커 파일 생성기(Intelligent Docker File Maker)(110)에 명령어들을 송신할 수 있다(①).
이 때, 지능형 도커 파일 생성기(Intelligent Docker File Maker)(110)는 Pull 명령어를 통하여 조합할 부분 도커 파일(Partial Docker File)를 선택할 수 있다(②).
이 때, 부분 도커 파일 조합 기(Partial Docker File Combinator)는 선택된 부분도커파일(Partial Docker File), 요청 패키지(Requirement) List 및 실행 환경(Env) List를 조합할 수 있다(③).
이 때, 종속성 검증기(Dependency Verification)는 조합된 부분 도커 파일을 검증할 수 있다(④).
이 때, 도커 파일 변환기(Docker File Convertor)는 검증이 완료된 부분도커파일(Partial Docker File)로부터 도커 파일(Docker File)을 생성할 수 있다(⑤).
이 때, 지능형 도커 파일 생성기(Intelligent Docker File Maker)(110)는 Built 명령어를 통하여 생성된 도커 파일로부터 도커 이미지를 생성할 수 있다(⑥).
이 때, 지능형 도커 파일 생성기(Intelligent Docker File Maker)(110)는 Push 명령어를 실행하여 도커 파일로부터 생성된 도커 이미지를 도커 이미지 저장소(Docker Image Repository)(30)에 저장할 수 있다(⑦).
이 때, 도커 이미지 분석기(Docker Image Analyzer)(120)는 Pull 명령어를 실행하여 저장된 도커 이미지를 도커 이미지 저장소(Docker Image Repository)(30)로부터 가져올 수 있다(⑧).
이 때, 도커 이미지 분석기(Docker Image Analyzer)(120)는 Run 명령어를 통하여 가져온 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석하고 그 결과에 대한 로그를 기록할 수 있다(⑨).
이 때, 도커 이미지 분석기(Docker Image Analyzer)(120)는 Extract 명령어를 실행하여 도커 이미지 저장소(Docker Image Repository)(30)에서 가져온 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보들을 저장할 수 있다(⑩).
도 8은 본 발명의 일실시예에 따른 도커 이미지 생성 방법을 나타낸 동작흐름도이다. 도 9는 도 8에 도시된 부분 도커 파일 생성 단계의 일 예를 세부적으로 나타낸 동작흐름도이다. 도 10은 도 8에 도시된 도커 이미지 생성 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 8을 참조하면, 본 발명의 일실시예에 따른 도커 이미지 생성 방법은 먼저 부분 도커 파일을 생성할 수 있다(S210).
즉, 단계(S210)는 사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성할 수 있다.
도 9를 참조하면, 단계(S210)는 먼저 부분 도커 파일을 조합할 수 있다(S211).
이 때, 단계(S211)는 먼저 지능형 도커 파일 생성기 클라이언트(10)가 Client 프로그램을 통하여 송신한 에 명령어들을 수신할 수 있다.
이 때, 단계(S211)는 Pull 명령어를 통하여 조합할 부분 도커 파일(Partial Docker File)를 선택할 수 있다.
이 때, 단계(S211)는 선택된 부분 도커 파일(Partial Docker File), 요청패키지(Requirement) List 및 실행 환경(Env) List를 조합할 수 있다.
또한, 단계(S210)는 부분 도커 파일을 검증할 수 있다(S212).
즉, 단계(S212)는 조합된 부분 도커 파일을 검증할 수 있다.
또한, 단계(S210)는 부분 도커 파일을 생성할 수 있다(S213).
즉, 단계(S213)는 검증이 완료된 부분 도커 파일(Partial Docker File)을 통하여 부분 도커 파일(Partial Docker File)을 생성할 수 있다.
또한, 단계(S210)는 부분 도커 파일을 저장할 수 있다(S214).
즉, 단계(S214)는 Push 명령어를 실행하여 생성된 부분 도커 파일(Partial Docker File)을 부분 도커 파일 저장소 (Partial Docker File Repository)(20)에 저장할 수 있다.
또한, 본 발명의 일실시예에 따른 도커 이미지 생성 방법은 도커 이미지를 생성할 수 있다(S220).
즉, 단계(S220)는 생성된 부분 도커 파일을 이용하여 도커 이미지를 생성할 수 있다.
도 10을 참조하면, 단계(S220)는 도커 파일을 생성할 수 있다(S221).
즉, 단계(S221)는 조합된 부분 도커 파일을 검증하고, 검증이 완료된 부분도커파일(Partial Docker File)로부터 도커 파일(Docker File)을 생성할 수 있다.
또한, 단계(S220)는 도커 이미지를 생성할 수 있다(S222).
즉, 단계(S222)는 Built 명령어를 통하여 생성된 도커 파일로부터 도커 이미지를 생성할 수 있다.
또한, 단계(S220)는 도커 이미지를 저장할 수 있다(S223).
즉, 단계(S223)는 Push 명령어를 실행하여 도커 파일로부터 생성된 도커 이미지를 도커 이미지 저장소(Docker Image Repository)(30)에 저장할 수 있다.
또한, 단계(S220)는 도커 이미지 작동 여부를 분석할 수 있다(S224).
이 때, 단계(S224)는 도커 이미지 분석기(Docker Image Analyzer)(120)는 Pull 명령어를 실행하여 저장된 도커 이미지를 도커 이미지 저장소(Docker Image Repository)(30)로부터 가져올 수 있다.
이 때, 단계(S224)는 Run 명령어를 통하여 가져온 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석하고 그 결과에 대한 로그를 기록할 수 있다.
또한, 단계(S220)는 도커 이미지 상세 정보를 저장할 수 있다(S225).
즉, 단계(S225)는 Extract 명령어를 실행하여 도커 이미지 저장소(Docker Image Repository)(30)에서 가져온 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보들을 저장할 수 있다.
도 11은 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 11을 참조하면, 본 발명의 일실시예에 따른 도커 이미지 생성 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1100)에서 구현될 수 있다. 도 11에 도시된 바와 같이, 컴퓨터 시스템(1100)은 버스(1120)를 통하여 서로 통신하는 하나 이상의 프로세서(1110), 메모리(1130), 사용자 인터페이스 입력 장치(1140), 사용자 인터페이스 출력 장치(1150) 및 스토리지(1160)를 포함할 수 있다. 또한, 컴퓨터 시스템(1100)은 네트워크(1180)에 연결되는 네트워크 인터페이스(1170)를 더 포함할 수 있다. 프로세서(1110)는 중앙 처리 장치 또는 메모리(1130)나 스토리지(1160)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1130) 및 스토리지(1160)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 ROM(1131)이나 RAM(1132)을 포함할 수 있다.
본 발명의 일실시예에 따른 도커 이미지 생성 장치는 하나 이상의 프로세서(1110); 및 상기 하나 이상의 프로세서(1110)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리(1130)를 포함하고, 상기 적어도 하나 이상의 프로그램은 사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성하고, 상기 부분 도커 파일을 이용하여 도커 이미지를 생성한다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트에 포함된 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트와 새로운 요청 패키지 리스트 간의 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보를 저장할 수 있다.
이상에서와 같이 본 발명의 일실시예에 따른 도커 이미지 생성 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
1100: 컴퓨터 시스템 1110: 프로세서
1120: 버스 1130: 메모리
1131: 롬 1132: 램
1140: 사용자 인터페이스 입력 장치
1150: 사용자 인터페이스 출력 장치
1160: 스토리지 1170: 네트워크 인터페이스
1180: 네트워크

Claims (10)

  1. 하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고,
    상기 적어도 하나 이상의 프로그램은
    사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성하고,
    상기 부분 도커 파일을 이용하여 도커 이미지를 생성하는 것을 특징으로 하는 도커 이미지 생성 장치.
  2. 청구항 1에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트에 포함된 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거하는 것을 특징으로 하는 도커 이미지 생성 장치.
  3. 청구항 2에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트와 새로운 요청 패키지 리스트 간의 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거하는 것을 특징으로 하는 도커 이미지 생성 장치.
  4. 청구항 2에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석하는 것을 특징으로 하는 도커 이미지 생성 장치.
  5. 청구항 4에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보를 저장하는 것을 특징으로 하는 도커 이미지 생성 장치.
  6. 도커 이미지 생성 장치의 도커 이미지 생성 방법에 있어서,
    사전에 정의된 요청 패키지 리스트, 실행 환경 리스트 및 초기 부분 도커 파일을 조합하고, 상기 요청 패키지 리스트에 포함된 요청 패키지들의 상호 종속성을 처리하여 부분 도커 파일을 생성하는 단계; 및
    상기 부분 도커 파일을 이용하여 도커 이미지를 생성하는 단계;
    를 포함하는 것을 특징으로 하는 도커 이미지 생성 방법.
  7. 청구항 6에 있어서,
    상기 부분 도커 파일을 생성하는 단계는
    상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트에 포함된 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거하는 것을 특징으로 하는 도커 이미지 생성 방법.
  8. 청구항 7에 있어서,
    상기 부분 도커 파일을 생성하는 단계는
    상기 상호 종속성을 처리하기 위해, 상기 요청 패키지 리스트와 새로운 요청 패키지 리스트 간의 요청 패키지들을 상호 비교하여 중복된 요청 패키지를 제거하는 것을 특징으로 하는 도커 이미지 생성 방법.
  9. 청구항 7에 있어서,
    상기 도커 이미지를 생성하는 단계는
    상기 도커 이미지를 컨테이너로 실행하여 작동 여부를 분석하는 것을 특징으로 하는 도커 이미지 생성 방법.
  10. 청구항 9에 있어서,
    상기 도커 이미지를 생성하는 단계는
    상기 도커 이미지를 레이어 별로 나누고 레이어 별로 상세 정보를 저장하는 것을 특징으로 하는 도커 이미지 생성 방법.
KR1020210124885A 2021-09-17 2021-09-17 도커 이미지 생성 장치 및 방법 KR20230041361A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210124885A KR20230041361A (ko) 2021-09-17 2021-09-17 도커 이미지 생성 장치 및 방법
US17/836,039 US20230091587A1 (en) 2021-09-17 2022-06-09 Docker image creation apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210124885A KR20230041361A (ko) 2021-09-17 2021-09-17 도커 이미지 생성 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20230041361A true KR20230041361A (ko) 2023-03-24

Family

ID=85572625

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210124885A KR20230041361A (ko) 2021-09-17 2021-09-17 도커 이미지 생성 장치 및 방법

Country Status (2)

Country Link
US (1) US20230091587A1 (ko)
KR (1) KR20230041361A (ko)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3391270B1 (en) * 2015-12-18 2020-10-07 Amazon Technologies Inc. Software container registry service
US10812582B2 (en) * 2016-03-10 2020-10-20 Vmware, Inc. Management of applications across nodes using exo-clones
US10496987B2 (en) * 2016-09-13 2019-12-03 Verizon Patent And Licensing Inc. Containerization of network services
US10303657B2 (en) * 2016-09-30 2019-05-28 International Business Machines Corporation Docker layer deduplication with layer referencing
US11762639B2 (en) * 2017-04-28 2023-09-19 Lzlabs Gmbh Containerized deployment of microservices based on monolithic legacy applications
US10545738B1 (en) * 2018-07-13 2020-01-28 Lzlabs Gmbh Containerized deployment of microservices based on monolithic legacy applications
CN109104451A (zh) * 2017-06-21 2018-12-28 阿里巴巴集团控股有限公司 Docker镜像的下载方法及节点、Docker镜像的预热方法及节点
CN107491329B (zh) * 2017-08-04 2021-03-16 上海携程商务有限公司 Docker镜像构建方法、设备、存储介质以及电子装置
CN108390920A (zh) * 2018-02-02 2018-08-10 浙江臻善科技股份有限公司 基于web端的Docker镜像构建方法、装置、存储设备及终端设备
CN108415795B (zh) * 2018-02-12 2019-04-05 人和未来生物科技(长沙)有限公司 一种容器Dockerfile、容器镜像快速生成方法及系统
US20190347127A1 (en) * 2018-05-09 2019-11-14 Red Hat, Inc. Service provisioning and orchestration for virtual machine to container migration
CN108897527B (zh) * 2018-05-21 2022-04-15 东莞理工学院 一种云计算中遥感图像处理的Docker镜像自动化动态构建方法
US10698798B2 (en) * 2018-11-28 2020-06-30 Sap Se Asynchronous consumer-driven contract testing in micro service architecture
CN110413455B (zh) * 2019-07-11 2023-12-12 北京百度网讯科技有限公司 容器镜像处理方法、装置、计算机设备和存储介质
CN110704156A (zh) * 2019-08-16 2020-01-17 北京奇艺世纪科技有限公司 一种Docker镜像构建方法及装置
US11157257B2 (en) * 2020-01-07 2021-10-26 International Business Machines Corporation Automatic cloning of Conda environment into Docker image
US11372668B2 (en) * 2020-04-02 2022-06-28 Vmware, Inc. Management of a container image registry in a virtualized computer system
CN113296888B (zh) * 2021-04-27 2022-11-22 优刻得科技股份有限公司 一种镜像处理方法及系统
US11972252B2 (en) * 2021-08-02 2024-04-30 Micro Focus Llc Docker installed software/hardware discovery

Also Published As

Publication number Publication date
US20230091587A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
US11232015B2 (en) Automated software verification service
CN108196915B (zh) 基于应用容器引擎的代码处理方法、设备及存储介质
US8621419B2 (en) Automating the life cycle of a distributed computing application
US8443347B2 (en) Translating declarative models
EP2246782A1 (en) Application modification framework
US8347265B1 (en) Method and apparatus for generating a command line interpreter
US20080271004A1 (en) Computer-implemented method, system, and program product for optimizing a distributed application
US11726800B2 (en) Remote component loader
CN112685035A (zh) 项目开发方法及装置、计算机可读存储介质、电子设备
US9904574B2 (en) Parallel computing without requiring antecedent code deployment
US11366703B2 (en) Dynamic application management across multi-cloud computing environment
US7752138B1 (en) Dynamic licensing in a distributed system
US7712079B2 (en) Program editing apparatus, program editing method, and program for splitting a program file
US20070006121A1 (en) Development activity recipe
KR20230041361A (ko) 도커 이미지 생성 장치 및 방법
CN116431155A (zh) 前端应用构建方法、介质、装置和计算设备
JP2005078178A (ja) コンピュータシステム及びソフトウェア管理方法
US11720348B2 (en) Computing node allocation based on build process specifications in continuous integration environments
KR20190075508A (ko) 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템
CN115248680A (zh) 软件构建方法、系统、设备、介质和程序产品
CN115291928A (zh) 多种技术栈的任务自动集成方法、装置及电子设备
CN110399296B (zh) 测试客户端与服务端之间交互接口的方法、系统和介质
CN113760292A (zh) 开发应用程序的方法、装置、电子设备和存储介质
WO2024000917A1 (zh) 一种无侵入可插拔的前端构建转移提速方法及装置
US11960861B1 (en) System and method for code development tools existing within code container

Legal Events

Date Code Title Description
E902 Notification of reason for refusal