KR102099118B1 - 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법 - Google Patents

사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법 Download PDF

Info

Publication number
KR102099118B1
KR102099118B1 KR1020190049711A KR20190049711A KR102099118B1 KR 102099118 B1 KR102099118 B1 KR 102099118B1 KR 1020190049711 A KR1020190049711 A KR 1020190049711A KR 20190049711 A KR20190049711 A KR 20190049711A KR 102099118 B1 KR102099118 B1 KR 102099118B1
Authority
KR
South Korea
Prior art keywords
container
library
session
user
libraries
Prior art date
Application number
KR1020190049711A
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 KR1020190049711A priority Critical patent/KR102099118B1/ko
Priority to US17/284,533 priority patent/US11144343B1/en
Priority to EP19926985.3A priority patent/EP3907607A4/en
Priority to PCT/KR2019/006730 priority patent/WO2020222352A1/ko
Priority to JP2021519544A priority patent/JP7054574B2/ja
Application granted granted Critical
Publication of KR102099118B1 publication Critical patent/KR102099118B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/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
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • 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/44552Conflict resolution, i.e. enabling coexistence of conflicting executables
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45583Memory management, e.g. access or allocation

Landscapes

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

Abstract

본 발명은 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법에 관한 것이다. 본 발명은 사용자로부터 컨테이너 실행을 수신하면, 노드컨트롤러가 컨테이너 카탈로그에서 라이브러리 컨테이너를 조회하는 단계와, 상기 노드컨트롤러가 상기 라이브러리 컨테이너내의 라이브러리가 탑재될 세션 컨테이너와 상기 라이브러리 컨테이너간의 호환 여부를 체크하는 단계와, 호환이 가능하면 컨테이너 엔진이 상기 라이브러리 컨테이너내의 라이브러리를 탑재한 세션 컨테이너를 생성하는 단계를 포함한다.

Description

사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법{A method of providing a session container with a plurality of libraries requested by a user}
본 발명은 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법에 관한 것으로, 특히 런타임 상에서 사용자가 요청한 다수개의 라이브러리들을 세션 컨테이너에 탑재하여 실행하는 방법에 관한 것이다.
컨테이너(Container)는 가상화가 아닌 운영체제 수준 격리 기술을 사용해 가상머신의 단점을 극복하는 가상화 기술로 부상하고 있다. 컨테이너는 커널 레벨 실행 환경은 호스트의 운영체제 커널을 공유하되, 사용자 레벨 실행 환경은 완전히 격리된 파일시스템과 커널이 제공하는 자원 요소들의 가상화된 이름 공간을 사용하는 방식으로 구현된다. 격리된 파일시스템의 내용은 애플리케이션과 이를 구동하는데 필요한 모든 종속물, 라이브러리, 기타 바이너리와 구성 파일 등을 하나의 패키지로 묶어 구성된다. 가상화된 이름 공간으로 구분되어 컨테이너에게 제공되는 커널의 자원 요소에는 프로세스 ID, 네트워크 소켓, 사용자 계정, 프로세스 간 통신(IPC)를 위한 공유 메모리 등이 있다. 그 외의 하드웨어 접근은 컨테이너가 아닌 경우와 동일하게 처리되므로 호스트 하드웨어의 성능을 오버헤드 없이 온전히 활용할 수 있다. 여기에 운영체제는 컨테이너별로 최대 사용 가능한 하드웨어 자원의 양을 제한할 수 있는 옵션을 제공한다.
한편, 종래의 컨테이너 이미지는 사용자 프로그램 실행에 필요한 모든 라이브러리를 하나의 덩어리로 묶은 것으로서 배포의 용이성을 보장하지만, 개별 라이브러리들을 별도로 업데이트하거나 추가적인 라이브러리가 필요한 경우 이를 런타임에 실시간으로 반영하기 어렵고 이미지를 처음부터 다시 빌드해야 하는 불편함이 있다.
한국등록특허 제10-1848450호
본 발명이 해결하고자 하는 과제는 라이브러리를 포함하고 있는 라이브러리 컨테이너들과 그에 관한 정보를 기술한 컨테이너 카탈로그를 이용하여 런타임에 실시간으로 사용자가 원하는 다수개의 라이브러리를 세션 컨테이너에 탑재하여 실행하는 방법을 제공하는 데 있다.
본 발명의 일 실시예에 따른 사용자가 조합한 다수개의 라이브러리 컨테이너들을 탑재한 세션 컨테이너 제공방법은 사용자로부터 컨테이너 실행을 수신하면, 노드컨트롤러가 컨테이너 카탈로그에서 라이브러리 컨테이너를 조회하는 단계와, 상기 노드컨트롤러가 상기 라이브러리 컨테이너가 탑재될 세션 컨테이너와 상기 라이브러리 컨테이너간의 호환 여부를 체크하는 단계와, 컨테이너 엔진이 상기 라이브러리 컨테이너를 탑재한 세션 컨테이너를 생성하는 단계를 포함한다.
상기 노드컨트롤러가 생성된 상기 세션 컨테이너를 실행하는 단계를 더 포함하고, 상기 라이브러리 컨테이너의 실행파일들은 상기 세션 컨테이너에서 실행가능하도록 정적 빌드로 생성한다.
상기 컨테이너 카탈로그에서 제공하는 디렉토리 및 파일을 바인드 마운트 형식으로 상기 세션 컨테이너에 탑재한다. 사용자의 요청에 따라 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하는 단계를 더 포함한다.
본 발명에 의하면, 컨테이너 카탈로그내의 라이브러리 컨테이너를 이용하여 사용자가 원하는 라이브러리들을 조합하여 탑재한 세션 컨테이너를 제공할 수 있다.
또한, 라이브러리 컨테이너가 제공하는 실행파일은 정적 빌드되어 있어 모든 임의의 컨테이너 환경에서 실행이 가능하다.
도 1은 본 발명의 일실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법을 설명하는 순서도이다.
도 3은 본 발명의 일실시예에 따른 라이브러리 컨테이너를 생성하는 방법을 설명하는 순서도이다.
도 4는 본 발명의 다른 실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법을 설명하는 순서도이다.
도 6은 본 발명의 다른 실시예에 따른 라이브러리 컨테이너를 생성하는 방법을 설명하는 순서도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 1을 참조하면, 세션 컨테이너 제공 시스템(100)의 소프트웨어 구조는 운영체제(110), 컨테이너 카탈로그(120), 세션 컨테이너(130, 140)로 구성된다.
운영체제(110)는 노드컨트롤러(111), 컨테이너엔진(113)으로 구성된다. 운영체제(110)는 운영체제 커널 내에 설치된 프로세서 드라이버를 통해 프로세서와 통신한다
노드컨트롤러(111)는 사용자로부터 세션 컨테이너 실행을 수신하면, 컨테이너 카탈로그(120)에서 사용자로부터 요청된 정보에 기초하여 라이브러리 컨테이너를 조회한다. 또한, 노드컨트롤러(111)는 사용자로부터 라이브러리 추가를 요청 받으면, 컨테이너 카탈로그에 필요한 라이브러리를 추가로 지정할 수 있다.
노드컨트롤러(111)는 라이브러리 컨테이너가 탑재될 세션 컨테이너(130, 140)와 라이브러리 컨테이너(121, 125)간의 호환 여부를 체크할 수 있다. 이때, 탑재될 세션 컨테이너와 라이브러리 컨테이너 간의 CPU 구조 및 배포판 종류로 호환 여부를 체크할 수 있으나 이에 대해 한정하는 것은 아니다. 즉, 호환이 가능한 경우에만 라이브러리 컨테이너의 라이브러리를 탑재한 세션 컨테이너를 생성할 수 있다. 노드컨트롤러(111)는 런타임 상에서 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하여 탑재할 수 있다.
컨테이너엔진(113)는 호환이 가능한 경우 세션 컨테이너(130, 140)를 생성하고 배포하며, 각 세션 컨테이너(130, 140)가 해당되는 응용 프로그램을 실행할 수 있다. 즉, 컨테이너엔진(113)은 생성된 세션 컨테이너를 실행하고 종료할 수 있다. 이때, 상기 컨테이너 카탈로그에서 제공하는 디렉토리 및 파일을 볼륨 마운트(volume-mount) 형식으로 상기 세션 컨테이너에 탑재할 수 있다.
컨테이너 카탈로그(120)는 다수개의 라이브러리 컨테이너들(121, 125)을 저장할 수 있다. 컨테이너 카탈로그(120)는 일종의 데이터베이스로서 운영체제 내에 구성될 수 있고, 실시예에 따라 별도의 서버에 배치될 수 있다.
제1라이브러리 컨테이너(121)는 제1라이브러리(123)를 포함하고, 제2라이브러리 컨테이너(125)는 제2라이브러리(127)를 포함한다.
제1세션컨테이너(130)는 제1라이브러리 컨테이너(121)내의 제1라이브러리(123)와 동일한 제1라이브러리(131), 제2라이브러리 컨테이너(125)의 제2라이브러리(127)와 동일한 제2라이브러리(133)가 탑재될 수 있고, 제2세션컨테이너(140)는 제1라이브러리 컨테이너(121)내의 제1라이브러리(123)와 동일한 제1라이브러리(141)만 탑재될 수 있다. 즉, 사용자의 요청에 따라 특정 라이브러리가 탑재되는 세션 컨테이너를 생성할 수 있다. 또한, 런타임 상에서 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하여 탑재할 수 있다.
세션 컨테이너(130, 140)는 사용자가 요청한 소프트웨어를 실행하는 컨테이너로서 사용자프로그램을 구동할 수 있도록 필요한 각종 프로그램, 소스코드 등과 라이브러리 등을 묶은 이미지를 포함하는 공간이다. 사용자프로그램의 구동은 운영체제(110)에서 실질적으로 이루어지게 된다. 즉, 운영체제(110)는 컨테이너엔진(113)을 통해 각각의 세션 컨테이너(130, 140)에 접근하여 해당하는 사용자 프로그램을 실행하고 처리할 수 있다. 사용자의 요청에 따라 제1라이브러리(131)와 제2라이브러리(133)가 탑재된 제1세션컨테이너(130)와, 제1라이브러리(141)가 탑재된 제2세션컨테이너(140)를 도시하고 있으나 세션컨테이너 및 탑재되는 라이브러리의 개수를 제한하는 것은 아니다. 본 발명은 라이브러리 컨테이너가 제공하는 실행파일은 정적 빌드되어 있어 모든 임의의 컨테이너 환경에서 실행이 가능하며, 컨테이너 카탈로그내의 라이브러리 컨테이너를 통해 사용자가 원하는 라이브러리들을 조합한 세션 컨테이너를 실시간으로 제공할 수 있다.
도 2는 본 발명의 일실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법을 설명하는 순서도이다.
도 2를 참조하면, 사용자가 컨테이너 실행을 요청하여 사용자로부터 컨테이너 실행을 수신하면(S201), 노드컨트롤러(111)가 컨테이너 카탈로그(120)에서 라이브러리 컨테이너를 조회한다(S203). 이때, 사용자가 라이브러리 추가를 요청하면, 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하는 단계를 더 포함할 수 있다.
이후, 노드컨트롤러(111)가 라이브러리 컨테이너(120)가 탑재될 세션 컨테이너와 라이브러리 컨테이너(121, 125)간의 호환 여부를 체크한다(S205).
호환이 가능하면 컨테이너 엔진(113)이 라이브러리 컨테이너 내의 라이브러리를 탑재한 세션 컨테이너(140)를 생성한다(S207). 이때, 상기 컨테이너 카탈로그에서 제공하는 디렉토리 및 파일을 볼륨 마운트 형식으로 상기 세션 컨테이너에 탑재할 수 있다. 호환이 불가능하면 프로세스를 종료한다.
이후에, 노드컨트롤러(111)가 생성된 세션 컨테이너(130, 140)를 실행한다(S209).
도 3은 본 발명의 일실시예에 따른 라이브러리 컨테이너를 생성하는 방법을 설명하는 순서도이다.
도 3을 참조하면, 컨테이너 카탈로그는 라이브러리를 포함하는 라이브러리 컨테이너를 생성한다(S301). 이때, 라이브러리 컨테이너의 라이브러리 실행파일들을 정적으로 빌드하여 생성할 수 있다. 즉, 라이브러리 컨테이너의 실행파일들이 상기 세션 컨테이너에서 실행가능하도록 정적 빌드로 생성한다(S303). 생성된 라이브러리 컨테이너를 컨테이너 카탈로그에 저장한다(S305).
도 4은 본 발명의 다른 실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 4을 참조하면, 세션 컨테이너 제공 시스템(200)의 소프트웨어 구조는 운영체제(210), 라이브러리 카탈로그(220), 세션 컨테이너(230, 240)로 구성된다.
운영체제(210)는 노드컨트롤러(211), 컨테이너엔진(213)으로 구성된다. 운영체제(210)는 운영체제 커널 내에 설치된 프로세서 드라이버를 통해 프로세서와 통신한다
노드컨트롤러(211)는 사용자로부터 세션 컨테이너 실행을 수신하면, 라이브러리 카탈로그(220)에서 사용자로부터 요청된 정보에 기초하여 라이브러리를 조회한다. 또한, 노드컨트롤러(211)는 사용자로부터 라이브러리 추가를 요청 받으면, 라이브러리 카탈로그에 필요한 라이브러리를 추가로 지정할 수 있다.
노드컨트롤러(211)는 라이브러리가 탑재될 세션 컨테이너(230, 240)와 라이브러리(221, 223)간의 호환 여부를 체크할 수 있다. 이때, 탑재될 세션 컨테이너와 라이브러리들간의 CPU 구조 및 배포판 종류로 호환 여부를 체크할 수 있으나 이에 대해 한정하는 것은 아니다. 즉, 호환이 가능한 경우에만 라이브러리 카탈로그의 라이브러리를 탑재한 세션 컨테이너를 생성할 수 있다. 노드컨트롤러(211)는 런타임 상에서 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하여 탑재할 수 있다.
컨테이너엔진(213)는 호환이 가능한 경우 세션 컨테이너(230, 240)를 생성하고 배포하며, 각 세션 컨테이너(230, 240)가 해당되는 응용 프로그램을 실행할 수 있다. 즉, 컨테이너엔진(213)은 생성된 세션 컨테이너를 실행하고 종료할 수 있다. 이때, 상기 라이브러리 카탈로그에서 제공하는 디렉토리 및 파일을 바인드 마운트(bind-mount) 형식으로 상기 세션 컨테이너에 탑재할 수 있다.
라이브러리 카탈로그(220)는 다수개의 라이브러리들(221, 223)을 저장할 수 있다. 라이브러리 카탈로그(220)는 일종의 데이터베이스로서 운영체제 내에 구성될 수 있고, 실시예에 따라 별도의 서버에 배치될 수 있다.
제1세션컨테이너(230)는 제1라이브러리(221)와 동일한 제1라이브러리(231), 제2라이브러리(223)와 동일한 제2라이브러리(233)가 탑재될 수 있고, 제2세션컨테이너(240)는 제1라이브러리(221)와 동일한 제1라이브러리(241)만 탑재될 수 있다. 즉, 사용자의 요청에 따라 특정 라이브러리가 탑재되는 세션 컨테이너를 생성할 수 있다. 또한, 런타임 상에서 라이브러리 카탈로그로부터 필요한 라이브러리를 추가로 지정하여 탑재할 수 있다.
세션 컨테이너(230, 240)는 사용자가 요청한 소프트웨어를 실행하는 컨테이너로서 사용자프로그램을 구동할 수 있도록 필요한 각종 프로그램, 소스코드 등과 라이브러리 등을 묶은 이미지를 포함하는 공간이다. 사용자프로그램의 구동은 운영체제(210)에서 실질적으로 이루어지게 된다. 즉, 운영체제(210)는 컨테이너엔진(213)을 통해 각각의 세션 컨테이너(230, 240)에 접근하여 해당하는 사용자 프로그램을 실행하고 처리할 수 있다. 사용자의 요청에 따라 제1라이브러리(231)와 제2라이브러리(233)가 탑재된 제1세션컨테이너(230)와, 제1라이브러리(241)가 탑재된 제2세션컨테이너(240)를 도시하고 있으나 세션컨테이너 및 탑재되는 라이브러리의 개수를 제한하는 것은 아니다. 본 발명은 라이브러리가 제공하는 실행파일은 정적 빌드되어 있어 모든 임의의 컨테이너 환경에서 실행이 가능하며, 라이브러리 카탈로그 내에 라이브러리들을 조합한 세션 컨테이너를 컨테이너를 제공할 수 있다.
도 5는 본 발명의 다른 실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법을 설명하는 순서도이다.
도 5를 참조하면, 사용자가 컨테이너 실행을 요청하여 사용자로부터 컨테이너 실행을 수신하면(S401), 노드컨트롤러가 라이브러리 카탈로그에서 라이브러리를 조회한다(S403). 이때, 사용자가 라이브러리 추가를 요청하면, 라이브러리 카탈로그로부터 필요한 라이브러리를 추가로 지정하는 단계를 더 포함할 수 있다.
이후, 노드컨트롤러가 라이브러리가 탑재될 세션 컨테이너와 라이브러리간의 호환 여부를 체크한다(S405).
호환이 가능하면 컨테이너 엔진이 라이브러리 컨테이너 내의 라이브러리를 탑재한 세션 컨테이너를 생성한다(S407). 이때, 상기 라이브러리 카탈로그에서 제공하는 디렉토리 및 파일을 바인드 마운트 형식으로 상기 세션 컨테이너에 탑재할 수 있다. 호환이 불가능하면 프로세스를 종료한다.
이후에, 노드컨트롤러가 생성된 세션 컨테이너를 실행한다(S409).
도 6은 본 발명의 다른 실시예에 따른 라이브러리 컨테이너를 생성하는 방법을 설명하는 순서도이다.
도 6을 참조하면, 라이브러리 카탈로그는 라이브러리를 생성한다(S501). 이때, 라이브러리 실행파일들을 정적으로 빌드하여 생성할 수 있다. 즉, 라이브러리 의 실행파일들이 상기 세션 컨테이너에서 실행가능하도록 정적 빌드로 생성할 수 있다(S503). 생성된 라이브러리를 라이브러리 카탈로그에 저장한다(S505).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 세션 컨테이너 제공시스템 110; 운영체제(OS)
111; 노드 컨트롤러 113; 컨테이너 엔진
120; 컨테이너 카탈로그(Container catalog)
121, 125; 라이브러리 컨테이너 123, 127; 라이브러리 실행파일
130, 140; 컨테이너(Container) 131, 133, 141; 라이브러리 실행파일

Claims (5)

  1. 사용자로부터 컨테이너 실행을 수신하면, 노드컨트롤러가 컨테이너 카탈로그에서 라이브러리 컨테이너를 조회하는 단계;
    상기 노드컨트롤러가 상기 라이브러리 컨테이너내의 라이브러리가 탑재될 세션 컨테이너와 상기 라이브러리 컨테이너간의 호환 여부를 체크하는 단계;
    호환이 가능하면 컨테이너 엔진이 상기 라이브러리 컨테이너내의 라이브러리를 탑재한 세션 컨테이너를 생성하는 단계; 및
    상기 노드컨트롤러가 생성된 상기 세션 컨테이너를 실행하는 단계를 포함하고,
    상기 노드컨트롤러는 탑재될 세션 컨테이너와 라이브러리 컨테이너간의 CPU구조 및 배포판 종류로 호환 여부를 체크하되, 런타임 상에서 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하여 탑재할 수 있는 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 라이브러리 컨테이너 내의 라이브러리는 상기 세션 컨테이너에서 실행가능하도록 정적 빌드로 생성하는 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법.
  4. 제1항에 있어서,
    상기 라이브러리 컨테이너 내의 라이브러리는 볼륨 마운트 형식으로 상기 세션 컨테이너에 탑재하는 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법.
  5. 삭제
KR1020190049711A 2019-04-29 2019-04-29 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법 KR102099118B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190049711A KR102099118B1 (ko) 2019-04-29 2019-04-29 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법
US17/284,533 US11144343B1 (en) 2019-04-29 2019-06-04 Method of providing session container mounted with plurality of libraries requested by user
EP19926985.3A EP3907607A4 (en) 2019-04-29 2019-06-04 METHOD OF DEPLOYING A SESSION CONTAINER HOUSING MULTIPLE LIBRARIES REQUESTED BY THE USER
PCT/KR2019/006730 WO2020222352A1 (ko) 2019-04-29 2019-06-04 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법
JP2021519544A JP7054574B2 (ja) 2019-04-29 2019-06-04 ユーザが要請した複数個のライブラリを搭載したセッションコンテナ提供方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190049711A KR102099118B1 (ko) 2019-04-29 2019-04-29 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법

Publications (1)

Publication Number Publication Date
KR102099118B1 true KR102099118B1 (ko) 2020-04-09

Family

ID=70276032

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190049711A KR102099118B1 (ko) 2019-04-29 2019-04-29 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법

Country Status (5)

Country Link
US (1) US11144343B1 (ko)
EP (1) EP3907607A4 (ko)
JP (1) JP7054574B2 (ko)
KR (1) KR102099118B1 (ko)
WO (1) WO2020222352A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170072552A (ko) * 2015-12-17 2017-06-27 에스케이텔레콤 주식회사 클라우드 개발 환경을 위한 컨테이너 서비스 방법 및 그 장치
US20170228227A1 (en) * 2012-03-02 2017-08-10 Vmware, Inc. Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud infrastructure
KR101848450B1 (ko) 2017-02-06 2018-04-12 국민대학교산학협력단 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9891939B2 (en) * 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
US10261814B2 (en) 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US9916233B1 (en) * 2015-03-27 2018-03-13 Amazon Technologies, Inc. Using containers for update deployment
KR102294568B1 (ko) 2015-08-19 2021-08-26 삼성에스디에스 주식회사 컨테이너 이미지 보안 검사 방법 및 그 장치
US9898354B2 (en) * 2016-03-21 2018-02-20 Microsoft Technology Licensing, Llc Operating system layering
KR102105690B1 (ko) 2016-04-27 2020-04-28 한국전자통신연구원 오픈 소스 가상화 클라우드 환경 기반 네트워크 컴퓨팅 개발 테스트베드 시스템
US10073974B2 (en) * 2016-07-21 2018-09-11 International Business Machines Corporation Generating containers for applications utilizing reduced sets of libraries based on risk analysis
US10402187B2 (en) * 2016-08-10 2019-09-03 Trilio Data Inc. Efficient workload deployment using containers and unikernels
US10503712B2 (en) * 2016-09-30 2019-12-10 International Business Machines Corporation Container repository optimization
US10346143B2 (en) * 2017-06-21 2019-07-09 Ca, Inc. Systems and methods for transforming service definitions in a multi-service containerized application
US10868855B2 (en) * 2019-04-01 2020-12-15 Citrix Systems, Inc. File containerization and management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170228227A1 (en) * 2012-03-02 2017-08-10 Vmware, Inc. Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud infrastructure
KR20170072552A (ko) * 2015-12-17 2017-06-27 에스케이텔레콤 주식회사 클라우드 개발 환경을 위한 컨테이너 서비스 방법 및 그 장치
KR101848450B1 (ko) 2017-02-06 2018-04-12 국민대학교산학협력단 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치

Also Published As

Publication number Publication date
EP3907607A1 (en) 2021-11-10
JP7054574B2 (ja) 2022-04-14
US20210311775A1 (en) 2021-10-07
JP2021529408A (ja) 2021-10-28
WO2020222352A1 (ko) 2020-11-05
US11144343B1 (en) 2021-10-12
EP3907607A4 (en) 2022-11-16

Similar Documents

Publication Publication Date Title
KR102032521B1 (ko) 컨테이너 기반의 gpu 가상화 방법 및 시스템
US10949237B2 (en) Operating system customization in an on-demand network code execution system
Thalheim et al. CNTR: lightweight {OS} containers
Kozhirbayev et al. A performance comparison of container-based technologies for the cloud
EP3035191B1 (en) Identifying source code used to build executable files
US10261764B2 (en) Handling value types
US8336056B1 (en) Multi-threaded system for data management
US11301562B2 (en) Function execution based on data locality and securing integration flows
US10310872B2 (en) Transparent fast application launcher
JPH09171465A (ja) 異なる命名サービス・プロバイダが動的に命名フェデレーションに接合することを可能とするシステムおよび方法
US10120665B1 (en) Latency-aware host-agnostic runtime
US9378013B2 (en) Incremental source code analysis
JP2013519168A (ja) 仮想化のための拡張ポイントの宣言的登録
Mavridis et al. Orchestrated sandboxed containers, unikernels, and virtual machines for isolation‐enhanced multitenant workloads and serverless computing in cloud
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
KR20220092615A (ko) 적시(Just-In-Time) 컨테이너
US7058656B2 (en) System and method of using extensions in a data structure without interfering with applications unaware of the extensions
US10719362B2 (en) Managing multiple isolated execution contexts in a single process
US10248449B1 (en) Application containers running inside virtual machine
KR102099118B1 (ko) 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법
US8924963B2 (en) In-process intermediary to create virtual processes
CN114461290A (zh) 数据处理的方法、实例以及系统
US11720374B1 (en) Dynamically overriding a function based on a capability set
McNab Container support in Vac
Govindarajan Applications and Enhancements of Featherweight Virtual Machine (FVM)

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant