KR102099118B1 - 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법 - Google Patents
사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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
본 발명은 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법에 관한 것으로, 특히 런타임 상에서 사용자가 요청한 다수개의 라이브러리들을 세션 컨테이너에 탑재하여 실행하는 방법에 관한 것이다.
컨테이너(Container)는 가상화가 아닌 운영체제 수준 격리 기술을 사용해 가상머신의 단점을 극복하는 가상화 기술로 부상하고 있다. 컨테이너는 커널 레벨 실행 환경은 호스트의 운영체제 커널을 공유하되, 사용자 레벨 실행 환경은 완전히 격리된 파일시스템과 커널이 제공하는 자원 요소들의 가상화된 이름 공간을 사용하는 방식으로 구현된다. 격리된 파일시스템의 내용은 애플리케이션과 이를 구동하는데 필요한 모든 종속물, 라이브러리, 기타 바이너리와 구성 파일 등을 하나의 패키지로 묶어 구성된다. 가상화된 이름 공간으로 구분되어 컨테이너에게 제공되는 커널의 자원 요소에는 프로세스 ID, 네트워크 소켓, 사용자 계정, 프로세스 간 통신(IPC)를 위한 공유 메모리 등이 있다. 그 외의 하드웨어 접근은 컨테이너가 아닌 경우와 동일하게 처리되므로 호스트 하드웨어의 성능을 오버헤드 없이 온전히 활용할 수 있다. 여기에 운영체제는 컨테이너별로 최대 사용 가능한 하드웨어 자원의 양을 제한할 수 있는 옵션을 제공한다.
한편, 종래의 컨테이너 이미지는 사용자 프로그램 실행에 필요한 모든 라이브러리를 하나의 덩어리로 묶은 것으로서 배포의 용이성을 보장하지만, 개별 라이브러리들을 별도로 업데이트하거나 추가적인 라이브러리가 필요한 경우 이를 런타임에 실시간으로 반영하기 어렵고 이미지를 처음부터 다시 빌드해야 하는 불편함이 있다.
본 발명이 해결하고자 하는 과제는 라이브러리를 포함하고 있는 라이브러리 컨테이너들과 그에 관한 정보를 기술한 컨테이너 카탈로그를 이용하여 런타임에 실시간으로 사용자가 원하는 다수개의 라이브러리를 세션 컨테이너에 탑재하여 실행하는 방법을 제공하는 데 있다.
본 발명의 일 실시예에 따른 사용자가 조합한 다수개의 라이브러리 컨테이너들을 탑재한 세션 컨테이너 제공방법은 사용자로부터 컨테이너 실행을 수신하면, 노드컨트롤러가 컨테이너 카탈로그에서 라이브러리 컨테이너를 조회하는 단계와, 상기 노드컨트롤러가 상기 라이브러리 컨테이너가 탑재될 세션 컨테이너와 상기 라이브러리 컨테이너간의 호환 여부를 체크하는 단계와, 컨테이너 엔진이 상기 라이브러리 컨테이너를 탑재한 세션 컨테이너를 생성하는 단계를 포함한다.
상기 노드컨트롤러가 생성된 상기 세션 컨테이너를 실행하는 단계를 더 포함하고, 상기 라이브러리 컨테이너의 실행파일들은 상기 세션 컨테이너에서 실행가능하도록 정적 빌드로 생성한다.
상기 컨테이너 카탈로그에서 제공하는 디렉토리 및 파일을 바인드 마운트 형식으로 상기 세션 컨테이너에 탑재한다. 사용자의 요청에 따라 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하는 단계를 더 포함한다.
본 발명에 의하면, 컨테이너 카탈로그내의 라이브러리 컨테이너를 이용하여 사용자가 원하는 라이브러리들을 조합하여 탑재한 세션 컨테이너를 제공할 수 있다.
또한, 라이브러리 컨테이너가 제공하는 실행파일은 정적 빌드되어 있어 모든 임의의 컨테이너 환경에서 실행이 가능하다.
도 1은 본 발명의 일실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법을 설명하는 순서도이다.
도 3은 본 발명의 일실시예에 따른 라이브러리 컨테이너를 생성하는 방법을 설명하는 순서도이다.
도 4는 본 발명의 다른 실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공시스템의 소프트웨어 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시예에 따른 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법을 설명하는 순서도이다.
도 6은 본 발명의 다른 실시예에 따른 라이브러리 컨테이너를 생성하는 방법을 설명하는 순서도이다.
도 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; 라이브러리 실행파일
111; 노드 컨트롤러 113; 컨테이너 엔진
120; 컨테이너 카탈로그(Container catalog)
121, 125; 라이브러리 컨테이너 123, 127; 라이브러리 실행파일
130, 140; 컨테이너(Container) 131, 133, 141; 라이브러리 실행파일
Claims (5)
- 사용자로부터 컨테이너 실행을 수신하면, 노드컨트롤러가 컨테이너 카탈로그에서 라이브러리 컨테이너를 조회하는 단계;
상기 노드컨트롤러가 상기 라이브러리 컨테이너내의 라이브러리가 탑재될 세션 컨테이너와 상기 라이브러리 컨테이너간의 호환 여부를 체크하는 단계;
호환이 가능하면 컨테이너 엔진이 상기 라이브러리 컨테이너내의 라이브러리를 탑재한 세션 컨테이너를 생성하는 단계; 및
상기 노드컨트롤러가 생성된 상기 세션 컨테이너를 실행하는 단계를 포함하고,
상기 노드컨트롤러는 탑재될 세션 컨테이너와 라이브러리 컨테이너간의 CPU구조 및 배포판 종류로 호환 여부를 체크하되, 런타임 상에서 컨테이너 카탈로그로부터 필요한 라이브러리를 추가로 지정하여 탑재할 수 있는 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법. - 삭제
- 제1항에 있어서,
상기 라이브러리 컨테이너 내의 라이브러리는 상기 세션 컨테이너에서 실행가능하도록 정적 빌드로 생성하는 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법. - 제1항에 있어서,
상기 라이브러리 컨테이너 내의 라이브러리는 볼륨 마운트 형식으로 상기 세션 컨테이너에 탑재하는 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법. - 삭제
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 |
JP2021519544A JP7054574B2 (ja) | 2019-04-29 | 2019-06-04 | ユーザが要請した複数個のライブラリを搭載したセッションコンテナ提供方法 |
PCT/KR2019/006730 WO2020222352A1 (ko) | 2019-04-29 | 2019-06-04 | 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법 |
EP19926985.3A EP3907607A4 (en) | 2019-04-29 | 2019-06-04 | METHOD OF DEPLOYING A SESSION CONTAINER HOUSING MULTIPLE LIBRARIES REQUESTED BY THE USER |
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)
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)
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 |
-
2019
- 2019-04-29 KR KR1020190049711A patent/KR102099118B1/ko active IP Right Grant
- 2019-06-04 JP JP2021519544A patent/JP7054574B2/ja active Active
- 2019-06-04 WO PCT/KR2019/006730 patent/WO2020222352A1/ko unknown
- 2019-06-04 EP EP19926985.3A patent/EP3907607A4/en not_active Withdrawn
- 2019-06-04 US US17/284,533 patent/US11144343B1/en active Active
Patent Citations (3)
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 |
US20210311775A1 (en) | 2021-10-07 |
EP3907607A4 (en) | 2022-11-16 |
WO2020222352A1 (ko) | 2020-11-05 |
JP2021529408A (ja) | 2021-10-28 |
JP7054574B2 (ja) | 2022-04-14 |
US11144343B1 (en) | 2021-10-12 |
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) | 仮想化のための拡張ポイントの宣言的登録 | |
KR20220092615A (ko) | 적시(Just-In-Time) 컨테이너 | |
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 | |
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 | |
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) | |
Yarom et al. | S-RVM: a secure design for a high-performance java virtual machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |