JP7410268B2 - コンテナ・ベースの仮想化システムに関する方法 - Google Patents

コンテナ・ベースの仮想化システムに関する方法 Download PDF

Info

Publication number
JP7410268B2
JP7410268B2 JP2022500154A JP2022500154A JP7410268B2 JP 7410268 B2 JP7410268 B2 JP 7410268B2 JP 2022500154 A JP2022500154 A JP 2022500154A JP 2022500154 A JP2022500154 A JP 2022500154A JP 7410268 B2 JP7410268 B2 JP 7410268B2
Authority
JP
Japan
Prior art keywords
container
compiling
kernel
application
virtualization system
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.)
Active
Application number
JP2022500154A
Other languages
English (en)
Other versions
JPWO2021009612A5 (ja
JP2022540810A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022540810A publication Critical patent/JP2022540810A/ja
Publication of JPWO2021009612A5 publication Critical patent/JPWO2021009612A5/ja
Application granted granted Critical
Publication of JP7410268B2 publication Critical patent/JP7410268B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/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/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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

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

Description

本発明は、デジタル・コンピュータ・システムの分野に関し、より具体的には、コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するための方法に関する。
ドッカー(Docker)などのコンテナ・マネージャは、コンテナと呼ばれるパッケージでソフトウェアを開発するためおよび届けるためにオペレーティング・システム・レベルの仮想化を使用する結合されたソフトウェア・アズ・ア・サービスおよびプラットフォーム・アズ・ア・サービス製品のセットである。しかしながら、コンテナの可搬性は、コンテナが展開されるシステムへの依存性のために制限されることがある。
様々な実施形態は、独立請求項の主題により記載されたようなコンテナ・ベースの仮想化システム、コンピュータ・システムおよびコンピュータ・プログラム製品のカーネルのカーネル機能を拡張するための方法を提供する。有利な実施形態が、従属請求項に記載される。本発明の実施形態は、これらが相互に排他的でないならば互いに自由に組み合わせることができる。
1つの態様では、本発明は、コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するための方法に関する。上記方法は、
-上記コンテナ・ベースの仮想化システムにおいてカーネル・モジュールをコンパイルするためのコンパイリング・コンテナと、カーネル・モジュールを使用して上記カーネルのカーネル機能を拡張するためのアプリケーション・コンテナとを上記コンテナ・ベースの仮想化システムに用意することと、
-上記アプリケーション・コンテナによって、上記コンパイリング・コンテナへ上記カーネル・モジュールを入力することと、
-上記コンパイリング・コンテナを使用して上記カーネル・モジュールをコンパイルすることと、
-上記アプリケーション・コンテナによって、上記コンパイルされたカーネル・モジュールを上記コンパイリング・コンテナから受信することと、
-上記アプリケーション・コンテナによって、上記カーネル機能の上記拡張を可能にするために上記システムの上記カーネルへ上記コンパイルされたカーネル・モジュールをロードすることと
を含む。
もう1つの態様では、本発明は、コンピュータ・プログラム製品に関し、コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を備え、上記コンピュータ可読プログラム・コードが、コンテナ・ベースの仮想化システムにおいてカーネル・モジュールをコンパイルするためのコンパイリング・コンテナと、カーネル・モジュールを使用して上記カーネルのカーネル機能を拡張するためのアプリケーション・コンテナとを含むコンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するように構成され、上記コンピュータ可読プログラム・コードが、上記コンパイリング・コンテナへ上記カーネル・モジュールを入力し、上記コンパイルされたカーネル・モジュールを上記コンパイリング・コンテナから受信し、上記カーネル機能の上記拡張を可能にするため上記システムの上記カーネルへ上記コンパイルされたカーネル・モジュールをロードするように構成される。
もう1つの態様では、本発明は、コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するためのコンピュータ・システムに関し、上記コンテナ・ベースの仮想化システムにおいてカーネル・モジュールをコンパイルするためのコンパイリング・コンテナと、カーネル・モジュールを使用して上記カーネルのカーネル機能を拡張するためのアプリケーション・コンテナとを備え、上記コンピュータ・システムが、上記コンパイリング・コンテナへ上記カーネル・モジュールを入力するために上記アプリケーション・コンテナを制御し、上記カーネル・モジュールをコンパイルするために上記コンパイリング・コンテナを制御し、上記コンパイルされたカーネル・モジュールを上記コンパイリング・コンテナから受信し、上記コンテナ・ベースの仮想化システムの上記カーネルへ上記コンパイルされたカーネル・モジュールをロードするために上記アプリケーション・コンテナを制御するように構成される。
下記では、発明の実施形態は、単に例として、図面を参照して非常に詳細に説明される。
コンテナ・ベースの仮想化システムのブロック図である。 コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するための方法のフローチャートである。 リナックス(Linux)カーネルの機能を拡張するための例を図解するコンテナ・ベースの仮想化システムのブロック図である。 本開示に関係するような1つまたは複数の方法ステップを実施するために適した、コンピュータ化されたシステムの図である。 既存のカーネル・ソース・コードに対して少なくとも1つの新たなアプリケーションを適用するためにリユース可能な標準化されたコンパイリング・コンテナを作り出すための方法のフローチャートである。 既存のカーネル・ソース・コードへとリナックス・カーネル・モジュール(LKM)を含む新たなアプリケーション・コンテナを適用するための方法のフローチャートである。
本発明の様々な実施形態の説明が、例証の目的で提示されるが、包括的であるものでも開示した実施形態に限定するものでもない。多くの修正形態および変形形態が、記載した実施形態の範囲および精神から逸脱せずに当業者には明らかだろう。本明細書において使用する用語は、実施形態の原理、実際的なアプリケーション、もしくは市場において見出される技術に対する技術的な改善を最も良く説明するために、または他の当業者が本明細書において開示する実施形態を理解することを可能にするために選択された。
本方法を用いて、カーネル・モジュールのコンパイレーションは、アプリケーション・コンテナの動作中にオン・ザ・フライで実行されることがある。コンパイレーション責任は、したがって、コンテナ化サービスおよびコンテナ・ベースの仮想化システムのオペレーティング・システムへ移動することがある。このことは、カーネル・モジュールがコンパイルされるはずでありそしてカーネル・モジュールがコンパイルされるシステムと互換性があるはずであるという理由で、アプリケーション・コンテナが統合されるだろうシステムにアプリケーション・コンテナが依存しなくてもよいことで、アプリケーション・コンテナが可搬性になってもよいという利点を有することがある。これは、プレコンパイルされたモジュールを有するアプリケーション・コンテナとは対照的であり、上記アプリケーション・コンテナに対して、カーネル・モジュールがプレコンパイルされているシステムと整合性があるならば、上記システムは最初に調べられなければならない。本主題は、別のシステムにおける各々のカーネル・モジュールのプレコンパイレーション、アプリケーション・コンテナにプレコンパイルされたモジュールを置くことそしてそのときにだけ、例えば、開発サイクル中にまたは後のコンテナ展開時のいずれかでアプリケーション・コンテナを統合すること/使用することを含め長いプロセスをこのように防止できる。例えば、上記プロセスのプレコンパイレーションがコンテナ・イメージ開発中に行われるときには、得られるアプリケーション・コンテナが展開されることがありそして実行できる環境を著しく制限することがある。これは、アプリケーション・コンテナおよびそのプレコンパイルされたカーネル・モジュールが、各々のサポートされたカーネルに対して別々に提供される必要があるという理由のためである。
方法は、アプリケーション・コンテナによりロードされたカーネル・モジュールを使用することをさらに含んでもよい。例えば、アプリケーション・コンテナは、カーネル・モジュールによって使用可能にされた追加のカーネル機能(例えば、ドライバ)を使用でき、上記機能は既存のカーネルでは利用できなかったかもしれない。本主題は、どのシステムが使用されるかに依存しない再現可能なビルドを実現するために安定なビルド環境を利用可能にできる。例えば、コンパイリング・コンテナが、コンパイリング・イメージから作り出されてもよい。コンパイリング・イメージが、異なるシステム構成に対して使用されてもよい。コンパイリング・コンテナおよびアプリケーション・コンテナは、これらが互いの間で通信できるように提供されてもよい。
コンテナ・ベースの仮想化システムは、コンテナ・ベースのシステムであってもよい。コンテナ・ベースの仮想化システムは、オペレーティング・システム・レベルの仮想化を可能にできる。OSレベル仮想化は、多数の分離されたユーザ空間インスタンスの存在を認めるコンテナ・ベースの仮想化システムのカーネルによって使用可能にされてもよい。本主題の複数のコンテナのうちのあるコンテナは、このような複数のインスタンスのうちのあるインスタンスであってもよい。コンテナ・マネージャが、コンテナを管理する(例えば、作り出す、削除する、開始する、等)ためにコンテナ・ベースの仮想化システムにインストールされることがある。
1つの実施形態によれば、コンパイリング・コンテナを用意することは、コンパイリング・イメージからコンテナ・ベースの仮想化システムにおいてコンパイリング・コンテナをビルドすることを含み、ここではコンパイリング・コンテナはコンパイリング・イメージの実行可能なインスタンスである。コンパイリング・コンテナが使用されるシステムにおいてコンパイリング・コンテナをビルドすることは、完全に自動化されそして効率的な方法を可能にできる。上記方法は、システムにとって適切でないことがあるコンパイリング・イメージのダウンロードの多数回の試みを防止できるので効率的なことがある。
イメージは、アプリケーションを実行するために必要なすべてのもの--コード、ランタイム、ライブラリ、環境変数、および設定ファイル--を含む実行可能なパッケージであってもよい。これは、コンパイリング・コンテナがコンパイラ、カーネル・ソース、追加のコンパイレーション・ツールおよびスクリプトなどのアーティファクトならびにテスト・プログラムにアクセスすることを可能にできる。アーティファクトは、コンパイリング・コンテナが作り出されているコンテナ・ベースの仮想化システムのコンパイリング・イメージに提供されることがある。コンパイリング・コンテナは、コンテナ・ベースの仮想化システムのコンテナ・マネージャのインストール中に自動的に作り出されることがある。コンパイリング・コンテナは、それ自体のカーネル・モジュールをロードすることが必要な他のアプリケーション・コンテナによってリユースされることがある。
1つの実施形態によれば、コンパイリング・コンテナを用意することは、コンパイリング・コンテナを受信することおよびコンテナ・ベースの仮想化システムへとコンパイリング・コンテナを統合することを含む。これが、本方法の柔軟な実施を可能にできる。例えば、イメージの多数のソースが、妥当なコンパイリング・コンテナを受信するために本方法により使用されてもよい。このことは、コンパイリング・コンテナのローカルな作り出しによってそうでなければ必要とされるはずの処理リソースを節約するという利点をさらに有することがある。受信したコンパイリング・コンテナは、例えば、リモートシステムにおいてコンテナ・ベースの仮想化システムのコンパイリング・イメージから作り出されていてもよい。
1つの実施形態によれば、コンテナ・ベースの仮想化システムは、コンテナ・マネージャを含み、上記方法は、入力するステップの前に、コンテナ・マネージャによってコンパイリング・コンテナおよびアプリケーション・コンテナを起動することをさらに含み、起動することが、コンパイリング・コンテナとアプリケーション・コンテナとの間の通信を可能にする。コンテナ・マネージャは、例えば、ドッカーまたはLXCであってもよい。例えば、コンパイリング・コンテナおよびアプリケーション・コンテナを起動することは、コマンド・ライン「docker run」によって実行されることがある。コンテナ・マネージャは、コンテナ・ベースの仮想化システムのコンテナの実行を制御するための集中型構成要素を提供できる。例えば、上記方法は、コンパイリング・コンテナを起動する前に、コンパイリング・コンテナが以前に起動されたか否かを判断することを含む。コンパイリング・コンテナが以前に起動されたのであれば、再び起動する必要はない。この実施形態は、コンパイリング・コンテナを起動することが、多数のアプリケーション・コンテナに対して1回実行されるだけでよく、したがって多数回起動することによってそうでなければ必要とされるはずの処理リソースを節約できる。
1つの実施形態によれば、コンテナ・ベースの仮想化システムは、コンテナ・マネージャを含み、上記方法は、入力するステップの前に、コンテナ・マネージャによってアプリケーション・コンテナを起動すること、およびアプリケーション・コンテナによってコンパイリング・コンテナを起動することをさらに含み、起動することが、コンパイリング・コンテナとアプリケーション・コンテナとの間の通信を可能にする。この実施形態は、これがアプリケーション・コンテナの可搬性および独立性を大きくできるので有利なことがある。
1つの例では、アプリケーション・コンテナは、コンパイリング・コンテナを作り出すようにそして起動するように構成されてもよい。コンパイリング・コンテナは、コンテナ・ベースの仮想化システム内に存在するコンパイリング・イメージから作り出されてもよい。
1つの実施形態によれば、コンパイリング・イメージは、コンテナ・マネージャのインストール時に作り出されるまたはソース・データベースからダウンロードされる。例えば、コンテナ・マネージャは、コンテナ・マネージャがインストールされると自動的に実行されるサービスを含むことができる。上記サービスは、一旦実行されると、コンパイリング・イメージを作り出すように構成されることがある。1つの例では、コンテナ・マネージャは、コンテナ・ベースの仮想化システムをインストールする時にインストールされてもよい。
インストール時にコンテナ・イメージを有することは、ごく初期にコンパイリング・コンテナを作り出すことを可能にできる、例えば、最初に作り出されるコンテナが、コンパイリング・コンテナであってもよい。このことは、各々の新たな追加のアプリケーション・コンテナがコンパイリング・コンテナを使用できることを可能にできる。このことが、本方法の使用効率を大きくできる。
1つの実施形態によれば、アプリケーション・コンテナを用意することは、アプリケーション・コンテナを受信すること、そしてコンテナ・ベースの仮想化システムへとアプリケーション・コンテナを統合することを含む。受信したアプリケーション・コンテナは、コンテナ・ベースの仮想化システムにおいて使用されるようにまたは実行されるように構成されることがある。1つの例では、アプリケーション・コンテナは、例えば、コンテナ・ベースの仮想化システムのアプリケーション・イメージからコンテナ・ベースの仮想化システムにおいて作り出されてもよい。
1つの実施形態によれば、上記方法は、コンパイリング・コンテナを削除することをさらに含む。このことは、コンテナ・ベースの仮想化システム内の処理リソース(例えば、ストレージ)を節約できる。このことは、カーネル機能の拡張がしばしば必要とされなくてもよいので特に有利なことがある。
1つの実施形態によれば、上記方法は、コンテナ・ベースの仮想化システムのカーネルのさらなる機能拡張のためにコンパイリング・イメージからコンパイリング・コンテナをリビルドすることをさらに含む。この実施形態は、既存のコンパイリング・イメージを使用でき、したがってコンパイリング・コンテナが作り出されるたび毎にイメージを作り出すというリソースを省略できる。例えば、さらなる拡張が、もう1つのアプリケーション・コンテナのもう1つのカーネル・モジュールによって可能にされてもよい、またはコンテナ・ベースの仮想化システムのアプリケーション・コンテナのもう1つのカーネル・モジュールによって可能にされてもよい。
もう1つの例では、アプリケーション・コンテナは(例えば、コンテナ・ベースの仮想化システムのリブーティングの後で)再びリユースされることがある。そのために、コンパイリング・コンテナは(削除されたのであれば)既存のイメージからリビルドされることがあり、そして入力するステップ、コンパイリング・ステップ、受信するステップおよびローディング・ステップは、リビルドされたコンパイリング・コンテナを使用して繰り返されることがある。このことは、ロードしたカーネル・モジュールがアンロードされているケースでは有利なことがある。
もう1つの例では、アプリケーション・コンテナは、もう1つのカーネル・モジュールを使用できる。そのために、コンパイリング・コンテナが既存のイメージからリビルドされることがあり、そして入力するステップ、コンパイリング・ステップ、受信するステップおよびローディング・ステップが、他のカーネル・モジュールをコンパイルしそしてロードするためにリビルドされたコンパイリング・コンテナを使用して繰り返されることがある。
1つの実施形態によれば、コンパイリング・コンテナおよびアプリケーション・コンテナの各々は、ドッカー・コンテナである。このことが、既存のシステムにおいて本主題のシームレス・インテグレーションを可能にできる。
1つの実施形態によれば、上記方法は、アプリケーション・コンテナによりアクセス可能なストレージにコンパイルされたカーネル・モジュールを記憶すること、カーネル・モジュールがカーネルからアンロードされるケースでは、アプリケーション・コンテナによってカーネルへと記憶されたコンパイルされたカーネル・モジュールをリロードすることをさらに含む。このことは、コンテナ・ベースの仮想化システムのリブーティングがロードしたカーネル・モジュールの削除/アンローディングを生じさせることがあるので特に有利なことがある。例えば、リローディングの後で、アプリケーション・コンテナが再び起動されることがあり、そして再び起動された後で、アプリケーション・コンテナはカーネル・モジュールがアンロードされていることを判断でき、そして次いでカーネルへと記憶されたコンパイルされたカーネル・モジュールをリロードできる。
1つの実施形態によれば、上記方法は、アプリケーション・コンテナおよびコンパイリング・コンテナによりアクセス可能であるコンテナ・ベースの仮想化システム内にディスクまたはストレージを用意することさらに含み、ここでは入力することが、アプリケーション・コンテナによってディスクにカーネル・モジュールを記憶すること、およびコンパイリング・コンテナによってディスクからカーネル・モジュールを読み出すことを含む。アプリケーション・コンテナおよびコンパイリング・コンテナが当該ディスクに両者ともアクセスできるように、ディスクは、例えばアプリケーション・コンテナおよびコンパイリング・コンテナの両方に搭載されてもよい。1つの例では、コンパイルされたカーネル・モジュールを受信することは、コンパイリング・コンテナによってディスクにコンパイルされたカーネル・モジュールを記憶すること、およびアプリケーション・コンテナによってディスクからコンパイルされたカーネル・モジュールを読み出すことを含むことができる。コンパイリング・コンテナおよびアプリケーション・コンテナは、ディスクのコンテンツを自動的に読み出すように構成されることがある、例えば、新たなデータがディスクに記憶されると直ぐに、コンテナが、ディスクのコンテンツを読み出すように構成されてもよい。
図1は、コンテナ・ベースの仮想化システム100のブロック図である。コンテナ・ベースの仮想化システム100は、オペレーティング・システム101およびハードウェア・コンポーネント103を備える。ハードウェア・コンポーネント103は、例えば、プロセッサ、メモリおよび入力/出力デバイスまたは周辺機器あるいはその両方などのデバイスを含むことができる。
例えば、コンテナ・ベースの仮想化システム100は、ソフトウェア・コンテナを開発するため、送達するため、インストールするためそして実行するためにオペレーティング・システム101によって少なくとも一部が実行されるコンテナ・マネージャ(またはコンテナ化サービス)107を含む。コンテナ・マネージャは、例えば、ドッカーまたはLXCであってもよい。コンテナ・ベースの仮想化システム100は、ソフトウェア・コンテナ105A~Nを備える。ソフトウェア・コンテナ105A~Nのソフトウェア・コンテナは、コンテナ・マネージャ107を使用して作り出されることがある。もう1つの例では、ソフトウェア・コンテナ105A~Nのソフトウェア・コンテナは、受信されてもインポートされてもよく、そしてコンテナ・ベースの仮想化システム100に統合されてもよい、例えば、受信したコンテナは、コンテナ・ベースの仮想化システム100と同じ構成(例えば、カーネル構成)を有するもう1つのシステムにビルドされていてもよい。
コンテナ・マネージャ107は、アプリケーション・コンテナ105A~Nによって使用されることがある能力のセットを提供する。例えば、コンテナ・マネージャ107は、ストレージ・イネーブリング・サービス111を含むことができる。ストレージ・イネーブリング・サービス111は、例えば、持続性のボリュームおよびドライバを利用可能にできる。コンテナ・マネージャ107は、アプリケーション・コンテナ105A~N同士の間の通信を可能にするためのネットワーク・イネーブリング・サービス113をさらに含むことができる。例えば、ネットワーク・イネーブリング・サービス113は、コンテナ内通信のために使用されることがある仮想ネットワークを利用可能にできる。
コンテナ・マネージャ107と協働してオペレーティング・システム101は、アプリケーション・コンテナ105A~Nなどのシステム100において実行しているソフトウェア・プロセス同士の間の分離性を提供する。例えば、プロセスは、2つのプロセスが互いのリソースにアクセスできないように、オペレーティング・システムのプライベート・ビューを有するように提供されてもよい。分離されるとはいえ、プロセスは、無関係で分離されたコンピュータ・システムが通信するように構成されそして許可されているのであればネットワークを介して通信できることと同じ方法で、プロセス同士の間のネットワーク接続、等によってなどで、依然として相互通信ができてもよい。
コンテナ・マネージャ107は、例えば、オペレーティング・システム101におけるインスタンス化、インストールまたは実行あるいはその組み合わせのためのコンテナ・イメージ109を受信するように構成されてもよい。コンテナ・イメージ109は、コンテナ・マネージャまたはインストーラなどのもう1つのソフトウェア構成要素により作り出されるまたは修正されるあるいはその両方をされることがある。コンテナ・イメージ109は、オペレーティング・システム101において分離されたプロセスとしての実行のためのソフトウェア構成要素であってもよい。例えば、コンテナ・イメージ109は、ドッカー・レジストリなどのコンテナ・リポジトリから得られるドッカー・イメージであってもよい。例えば、コンテナ・イメージ109は、コンテナを作り出すための命令を有する読み取り専用テンプレートであってもよい。コンテナ・イメージ109を使用して、コンテナは、オペレーティング・システム101において1つまたは複数のプロセスとしての実行のためにコンテナ・マネージャ107によってインスタンス化されることがある。
アプリケーション・コンテナ105A~Nは、相互に通信するように構成されることがある。例えば、コンテナ・マネージャ107のネットワーク(例えば、ネットワークが、ネットワーク・イネーブリング・サービス113によって作り出されることがある)は、アプリケーション・コンテナ同士の間の通信のために使用されてもよい。ネットワークは、例えば、ドッカーのブリッジ・ネットワークであってもよい。
ソフトウェア・コンテナ105A~Nは、本主題によればコンパイリング・コンテナ(またはコンパイレーション・コンテナ)105Nを含む。コンパイリング・コンテナ105Nは、リナックス・カーネル・モジュールなどのカーネル・モジュールをコンパイルするように構成されることがある。例えば、コンパイリング・コンテナ105Nは、カーネル・モジュールをコンパイルするために必要とされるアーティファクトへのアクセスを有することがある。これらは、例えば、カーネル・ソース・ファイルおよびヘッダ、Cコンパイラ、コンパイレーション・スクリプトである。コンパイリング・コンテナは、システム100の構成にしたがってカーネル・モジュールをコンパイルするためのビルド環境を提供できる。
コンパイリング・コンテナ105Nは、例えば、コンテナ・マネージャのインストール時に作り出されることがある。コンテナ・マネージャ107は、定義された任意選択のOSパッケージ依存性-カーネル・ソース・ファイル・パッケージ、Cコンパイラ・パッケージを有することがある。これらの依存性がLKMコンパイレーションを満足しないのであれば、コンテナ・イメージがサービス・インストール時に作り出されないことがあり、そしてコンテナ・イメージがアプリケーション・コンテナにとって利用可能でないことがある。
コンパイリング・コンテナは、コンテナ・マネージャのインストール時に作り出されることがある。このことは、コンテナ・マネージャがインストールの前に既にシステムにインストールされる必要があるパッケージへの依存性を有することがあるので有利なことがある。これらのパッケージは、コンパイリング・イメージを作り出すために使用されることがある。これらのパッケージは、例えば、カーネル・ソース・パッケージ、コンパイラ、コンパイレーション・ツール、ライブラリおよびスクリプトを含むことができる。
アプリケーション・コンテナ105Aは、例えば、カーネル・モジュールを含むことができ、そしてオペレーティング・システム101のカーネルの機能を拡張するためにカーネル・モジュールを使用できる。
図2は、コンテナ・ベースの仮想化システム、例えば100のカーネルのカーネル機能を拡張するための方法のフローチャートである。単純化の目的で、図2の方法は、図1のシステムを参照して説明されるが、これに限定されない。カーネル機能は、例えば、ドライバまたはアプリケーション・コンテナを使用してソフトウェア・モジュールにより拡張されてもよい。
例えば、アプリケーション・コンテナ105Aは、リナックス・カーネル・モジュールを含むことができる。一旦コンパイルされると、リナックス・カーネル・モジュールは、システム100のリナックス・カーネルへと直接挿入されてもよいひとまとまりのコンパイルされたバイナリ・コードであってもよい。ロードされたコードは、システム100内のすべてのものにアクセスできる。これが、リナックス・カーネルのカーネル機能の拡張を可能にできる。
1つの例では、ステップ201を実行する前に、アプリケーション・コンテナ105Aおよびコンパイリング・コンテナ105Nが、コンテナ・マネージャにより起動されることがある。これは、2つのコンテナが相互の間でデータを通信できることを可能にできる。例えば、コンパイリング・コンテナは、アプリケーション・コンテナ105Aが始動する前に実行されるまたは起動されることがある。アプリケーション・コンテナは、LKMソースを用いて展開されそして構成されることがある。コンパイリング・コンテナは、LKMをコンパイルするため、試験するためおよびアプリケーション・コンテナに公開するために使用されることがある。もう1つの例では、アプリケーション・コンテナは、コンテナ・マネージャによって最初に起動されることがあり、そして起動されたアプリケーション・コンテナがコンパイリング・コンテナを起動できる。2つのコンテナを起動した後で、アプリケーション・コンテナ105Aは、ステップ201でカーネル・モジュールをコンパイリング・コンテナ105Nへと入力できる。
1つの例では、アプリケーション・コンテナおよびコンパイリング・コンテナが両者とも当該ディスクにアクセスできるように、ディスクがアプリケーション・コンテナおよびコンパイリング・コンテナの両者に対して搭載されることがある。例えば、カーネル・モジュールを入力するために、アプリケーション・コンテナはカーネル・モジュールをディスクへと記憶でき、そしてコンパイリング・コンテナがディスクからカーネル・モジュールを読み出すことができる。
もう1つの例では、コンパイリング・コンテナは、サービスを含むことができる。サービスは、一旦コンパイリング・コンテナにおいて実行されると、アプリケーション・コンテナがコンパイリング・コンテナへカーネル・モジュールを入力できるようにアプリケーション・コンテナとコンパイリング・コンテナとの間の通信を可能にできる。
入力としてカーネル・モジュールを受信することに応じて、コンパイリング・コンテナ105Nは、ステップ203においてオペレーティング・システム101に対してカーネル・モジュールをコンパイルできる。そして得られるコンパイルされたカーネル・モジュールが、アプリケーション・コンテナ105Aへコンパイリング・コンテナ105Nによって送られることがある。
アプリケーション・コンテナ105Aは、ステップ205においてコンパイルされたカーネル・モジュールをコンパイリング・コンテナ105Nから受信できる。1つの例では、アプリケーション・コンテナは、ストレージ、例えばディスクからコンパイルされたカーネル・モジュールをインポートでき、ここではコンパイルされたカーネル・モジュールがコンパイリング・コンテナによって記憶される。1つの例では、コンパイリング・コンテナは、アプリケーション・コンテナへコンパイルされたカーネル・モジュールを送信できる。
アプリケーション・コンテナ105Aは、ステップ207においてオペレーティング・システム101のカーネルへコンパイルされたカーネル・モジュールをロードできる。アプリケーション・コンテナ105Aは、ランタイムにおいてロードされたモジュールを使用できる。この方法は、アプリケーション・コンテナをホストのカーネルから独立させるようにできる。一旦ロードされると、アプリケーション・コンテナは、それ自体の機能を実行するためにカーネル・モジュールを使用できる、例えば、アプリケーション・コンテナは、カーネル・モジュールによって利用可能にされる新たなカーネル機能を使用してデータを記憶するためにカーネル・モジュールを使用できるデータベース・サーバであってもよい。
図3は、リナックス・カーネル301の機能を拡張するための例を図解しているコンテナ・ベースの仮想化システム300のブロック図である。コンテナ・ベースの仮想化システム300は、コンテナ・マネージャ(またはコンテナ化サービス)302を含む。
コンテナ・マネージャ302は、ストレージ・イネーブリング・サービス303を含む。ストレージ・イネーブリング・サービス303は、例えば、持続性のボリュームおよびドライバを利用可能にできる。コンテナ・マネージャ302は、コンテナ・ベースの仮想化システム300のアプリケーション・コンテナ309A~Cと307との間の通信を可能にするためのネットワーク・イネーブリング・サービス305をさらに含む。例えば、ネットワーク・イネーブリング・サービス305は、コンテナ内通信のために使用されることがある仮想ネットワークを利用可能にできる。
アプリケーション・コンテナは、リナックス・カーネル・モジュール(LKM)コンパイレーション・コンテナ307を含む。例えば、アプリケーション開発チームは、図3の本方法において使用される前にLKMコンパイレーション・コンテナ内のLKMコンパイレーションを試験した、例えば、LKMコンテナが利用可能であり続けることがあり、コンテナ・マネージャ302であってもなくてもよい所与のコンテナ化サービスにおいて試験されている。LKMコンパイレーション・コンテナ307は、例えば、利用可能なイメージからコンテナ・ベースの仮想化システム300内で開発されることがある。
アプリケーション・コンテナ309Aは、LKMをロードし使用する必要性がある。アプリケーション・コンテナ309Aは、LKMソース・ファイルを輸送できる。アプリケーション・コンテナ309Aは、展開中にLKMコンパイレーション・コンテナ307を利用できる。例えば、アプリケーション・コンテナ309Aは、LKMソース・ファイルを送り、そして現在実行されているリナックス・カーネルに対してLKMをコンパイルする(311)。コンパイルされたLKMバイナリは、LKMコンパイレーション・コンテナ307からコピーされて、アプリケーション・コンテナ309Aへ戻される(312)。その後で、LKMコンパイレーション・コンテナ307は、この点で最早必要とされないことがあるのでコンテナ・ベースの仮想化システム300から削除される。もう1つのアプリケーション・コンテナもまた、LKMをコンパイルするために必要であるならば、LKMコンパイレーション・コンテナのもう1つのインスタンスが、利用可能なイメージから展開されることがある。アプリケーション・コンテナ309Aは、リナックス・カーネル301へとコンパイルされたLKMをロードする(313)。その後で、アプリケーション・コンテナ309Aは、十分に展開されてもよくそして開始されてもよい。
図4は、開示に関わるような方法ステップを実施するために適したコンテナ・ベースの仮想化システム100などの一般的なコンピュータ化されたシステム400を表す。
本明細書において説明する方法は、少なくとも一部は非対話型であり、そしてサーバまたは組み込まれたシステムなどのコンピュータ化されたシステムによって自動化されることが認識されるだろう。それにもかかわらず例示的な実施形態では、本明細書において説明する方法は、(部分的に)対話型システムで実装されることがある。これらの方法は、ソフトウェア412、422(ファームウェア422を含む)、ハードウェア(プロセッサ)405またはこれらの組み合わせでさらに実施されることがある。例示的な実施形態では、本明細書において説明する方法は、実行可能なプログラムとしてソフトウェアで実施され、そしてパーソナル・コンピュータ、ワークステーション、マイクロコンピュータ、またはメインフレーム・コンピュータなどの専用または汎用デジタル・コンピュータにより実行される。最も一般的なシステム400はこれゆえ、汎用コンピュータ401を含む。
例示的な実施形態では、ハードウェア・アーキテクチャに関して、図4に示されたように、コンピュータ401は、プロセッサ405、メモリ・コントローラ415につなげられたメモリ(メイン・メモリ)410、ならびにローカル入力/出力コントローラ435を介して通信でつなげられた1つまたは複数の入力および/または出力(I/O)デバイス(または周辺機器)10、445を含む。入力/出力コントローラ435は、本技術において知られているような、1つもしくは複数のバスまたは他の有線もしくは無線接続体であってもよいが、これに限定されない。入力/出力コントローラ435は、通信を可能にするために、簡潔さのために省略されるコントローラ、バッファ(キャッシュ)、ドライバ、リピータ、および受信機などの追加の要素を有することができる。さらに、ローカル・インターフェースは、前述のコンポーネント同士の間の適切な通信を可能にするために、アドレス部、コントローラ部、またはデータ接続部あるいはその組み合わせを含むことができる。本明細書において説明するように、I/Oデバイス10、445は、いずれかの一般化された暗号カードまたは本技術において知られたスマート・カードを一般に含むことができる。
プロセッサ405は、ソフトウェア、特にメモリ410に記憶されたものを実行するためのハードウェア・デバイスである。プロセッサ405は、いずれかの特注のもしくは市販のプロセッサ、中央処理装置(CPU)、コンピュータ401と関係付けられたいくつかのプロセッサの中の予備プロセッサ、(マイクロチップもしくはチップセットの形態の)半導体に基づくマイクロプロセッサ、マクロプロセッサ、または一般にソフトウェア命令を実行するための任意のデバイスであってもよい。
メモリ410は、揮発性メモリ素子(例えば、ランダム・アクセス・メモリ(DRAM、SRAM、SDRAM、等などのRAM))、および不揮発性メモリ素子(例えば、ROM、消去書込み可能読み取り専用メモリ(EPROM)、電気的消去書込み可能読み取り専用メモリ(EEPROM)、書込み可能読み取り専用メモリ(PROM))のうちのいずれか1つまたは組み合わせを含むことができる。メモリ410は分散型アーキテクチャを有することができ、そこでは様々な構成要素が互いに離れて置かれるが、プロセッサ405によりアクセスされることがあることに留意されたい。
メモリ410内のソフトウェアは、1つまたは複数の別々のプログラムを含むことができ、その各々が、論理機能、特にこの発明の実施形態に関係する機能を実施するための実行可能な命令の順序付きのリストを含む。図4の例では、メモリ410内のソフトウェアは、命令412、例えば、データベース管理システムなどのデータベースを管理するための命令を含む。
メモリ410内のソフトウェアはまた、適切なオペレーティング・システム(OS)411も典型的には含むはずである。OS411は、本明細書において説明されるような方法を実施するためのおそらくソフトウェア412などの他のコンピュータ・プログラムの実行を本質的には制御する。
本明細書において説明する方法は、ソース・プログラム412、実行可能なプログラム412(オブジェクト・コード)、スクリプト、または実行すべき命令412のセットを含むいずれかの他のエンティティの形態であってもよい。ソースがプログラムを供給する時には、プログラムは、OS411に関連して適正に動作するように、メモリ410内に含まれても含まれなくてもよいコンパイラ、アセンブラ、インタープリッタ、等を介して変換される必要がある。さらにその上、方法は、データおよび方法のクラスを有するオブジェクト指向プログラミング言語、またはルーチン、サブルーチン、もしくはファンクションあるいはその組み合わせを有する手続きプログラミング言語として書かれてもよい。
例示的な実施形態では、従来型のキーボード450およびマウス455が、入力/出力コントローラ435につなげられることがある。I/Oデバイス445などの他の出力デバイスは、入力デバイス、例えば、限定されないがプリンタ、スキャナ、マイクロフォン、等を含むことができる。最後に、I/Oデバイス10、445は、入力部および出力部の両方と通信するデバイス、例えば、限定されないが、ネットワーク・インターフェース・カード(NIC)または(他のファイル、デバイス、システム、またはネットワークにアクセスするための)モジュレータ/デモジュレータ、無線周波数(RF)トランシーバまたは他のトランシーバ、電話インターフェース、ブリッジ、ルータ、等をさらに含むことができる。I/Oデバイス10、445は、本技術において知られたいずれかの一般化した暗号化カードまたはスマート・カードであってもよい。システム400は、ディスプレイ430につなげられたディスプレイ・コントローラ425をさらに含むことができる。例示的な実施形態では、システム400は、ネットワーク465につなげるためのネットワーク・インターフェースをさらに含むことができる。ネットワーク465は、広帯域接続を介した、コンピュータ401と任意の外部サーバ、クライアント、等との間の通信のためのIPに基づくネットワークであってもよい。ネットワーク465は、コンピュータ401と外部システム30との間でデータを送信しそして受信し、上記外部システムは本明細書において論じる方法のステップのうちの一部またはすべてを実行することに関係することがある。例示的な実施形態では、ネットワーク465は、サービス・プロバイダによって管理された管理型IPネットワークであってもよい。ネットワーク465は、例えば、WiFi、WiMax、等などの無線プロトコルおよび技術を使用して無線方式で実装されてもよい。ネットワーク465はまた、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット・ネットワーク、または他の類似したタイプのネットワーク環境などのパケット交換ネットワークであってもよい。ネットワーク465は、固定型無線ネットワーク、無線ローカル・エリア・ネットワーク(LAN)、無線ワイド・エリア・ネットワーク(WAN)、パーソナル・エリア・ネットワーク(PAN)、仮想プライベート・ネットワーク(VPN)、イントラネットまたは他の適切なネットワーク・システムであってもよく、そして信号を受信するためおよび送信するための設備を含む。
コンピュータ401がPC、ワークステーション、インテリジェント・デバイス、等であるならば、メモリ410内のソフトウェアは、基本入出力システム(BIOS)422をさらに含むことができる。BIOSは、スタートアップ時にハードウェアを初期化しそして試験し、OS411を始動し、そしてハードウェア・デバイス同士の間のデータの転送をサポートする必須のソフトウェア・ルーチンのセットである。BIOSは、コンピュータ401が起動されるときにBIOSが実行されてもよいように、ROMに記憶される。
コンピュータ401が動作しているときには、プロセッサ405は、メモリ410内部に記憶されたソフトウェア412を実行するように、メモリ410へそしてメモリ410からデータを通信するように、およびソフトウェアにしたがってコンピュータ401の動作を全体として制御するように構成される。本明細書において説明する方法およびOS411は、全体でまたは部分的であるが、典型的には部分的に、プロセッサ405により読み出され、プロセッサ405の内部におそらくバッファされ、次いで実行される。
システムおよび本明細書において説明される方法が図4に示されているようなソフトウェア412で実装されると、方法は、システムまたは方法に関係するいずれかのコンピュータによる使用またはそれに関連した使用のために、ストレージ420などのいずれかのコンピュータ可読媒体上に記憶されることがある。ストレージ420は、HDDストレージなどのディスク・ストレージを含むことができる。
図5は、既存のカーネル・ソース・コードに対して少なくとも1つの新たなアプリケーションを適用するためにリユース可能な標準化されたコンパイリング・コンテナを作り出すための方法のフローチャートである。ステップ501では、コンパイラ、カーネル・ソース・コード、少なくとも1つのスペシャル・コンパイレーション・ツール、少なくとも1つのライブラリ、少なくとも1つのスクリプト、少なくとも1つの試験プログラムのようなプレインストールされたホスト・システムの異なる構成要素を利用できるコンパイリング・コンテナが作り出されることがある。コンパイリング・コンテナは、ステップ503において、さらなる使用のためにホスト・システム上にインストールされることがある。コンパイリング・コンテナは、ステップ505において、LKM(リナックス・カーネル・モジュール)を含有している追加のアプリケーション・コンテナのためにリユースされることがある。
図6は、既存のカーネル・ソース・コードへとリナックス・カーネル・モジュール(LKM)を含む新たなアプリケーション・コンテナを適用するための方法のフローチャートである。ステップ601では、コンパイリング・コンテナが、ホスト・システムへと統合されることがある。新たなアプリケーションは、ステップ603において、ソース・コードを用いて少なくとも1つのLKMを搬送しているホスト・システムへとコンテナを送ることができる。新たなアプリケーション・コンテナのLKMは、ステップ605においてコンパイルされることがある。コンパイレーションは、実行しているホスト・カーネルに対して直接にLKMをコンパイルする能力を有するコンパイリング・コンテナを用いて行われる。
様々な実施形態が、下記の番号を付けた条項において明記される:
1.コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するための方法であって、上記方法が、
上記コンテナ・ベースの仮想化システムにおいてカーネル・モジュールをコンパイルするためのコンパイリング・コンテナと、カーネル・モジュールを使用して上記カーネルのカーネル機能を拡張するためのアプリケーション・コンテナとを上記コンテナ・ベースの仮想化システムに用意することと、
上記アプリケーション・コンテナによって、上記コンパイリング・コンテナへ上記カーネル・モジュールを入力することと、
上記コンパイリング・コンテナを使用して上記カーネル・モジュールをコンパイルすることと、
上記アプリケーション・コンテナによって、上記コンパイルされたカーネル・モジュールを上記コンパイリング・コンテナから受信することと、
上記アプリケーション・コンテナによって、上記カーネル機能の上記拡張を可能にするために上記システムの上記カーネルへ上記コンパイルされたカーネル・モジュールをロードすることと
を含む。
2.上記コンパイリング・コンテナを用意することが、コンパイリング・イメージから上記コンテナ・ベースの仮想化システムのところで上記コンパイリング・コンテナをビルドすることを含み、上記コンパイリング・コンテナが上記コンパイリング・イメージの実行可能なインスタンスである、条項1に記載の方法。
3.上記コンパイリング・コンテナを用意することが、上記コンパイリング・コンテナを受信し、上記コンテナ・ベースの仮想化システムへと上記コンパイリング・コンテナを統合することを含む、条項1に記載の方法。
4.上記コンテナ・ベースの仮想化システムが、コンテナ・マネージャを含み、上記方法が、上記入力するステップの前に、上記コンテナ・マネージャによって上記コンパイリング・コンテナおよび上記アプリケーション・コンテナを起動することをさらに含み、上記起動することが上記コンパイリング・コンテナと上記アプリケーション・コンテナとの間の通信を可能にする、条項1に記載の方法。
5.上記コンテナ・ベースの仮想化システムが、コンテナ・マネージャを含み、上記方法が、上記入力するステップの前に、上記コンテナ・マネージャによって上記アプリケーション・コンテナを起動することと、上記アプリケーション・コンテナによって上記コンパイリング・コンテナを起動することとをさらに含み、上記起動することが上記コンパイリング・コンテナと上記アプリケーション・コンテナとの間の通信を可能にする、条項1に記載の方法。
6.上記コンパイリング・イメージが、上記コンテナ・ベースの仮想化システムのインストール時に作り出されるまたはソース・データベースからダウンロードされる、条項2に記載の方法。
7.上記アプリケーション・コンテナを用意することが、上記アプリケーション・コンテナを受信することと、上記アプリケーション・コンテナを上記コンテナ・ベースの仮想化システムへと統合することとを含む、条項1に記載の方法。
8.上記コンパイリング・コンテナを削除することをさらに含む、条項1に記載の方法。
9.上記コンテナ・ベースの仮想化システムの上記カーネルのさらなる機能拡張のために上記コンパイリング・イメージから上記コンパイリング・コンテナをリビルドすることをさらに含む、条項8に記載の方法。
10.上記アプリケーション・コンテナによりアクセス可能なストレージに上記コンパイルされたカーネル・モジュールを記憶することと、上記カーネル・モジュールが上記カーネルからアンロードされるケースでは、上記アプリケーション・コンテナによって、上記カーネルへと上記記憶されたコンパイルされたカーネル・モジュールをリロードすることとをさらに含む、条項1に記載の方法。
11.上記アプリケーション・コンテナおよび上記コンパイリング・コンテナによりアクセス可能である上記コンテナ・ベースの仮想化システムにディスクを用意することをさらに含み、上記入力することが、上記アプリケーション・コンテナによって、上記ディスクに上記カーネル・モジュールを記憶することと、上記コンパイリング・コンテナによって、上記ディスクから上記カーネル・モジュールを読み出すこととを含む、条項1に記載の方法。
12.上記コンパイリング・コンテナおよび上記アプリケーション・コンテナの各々が、ドッカー・コンテナである、条項1に記載の方法。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート説明図またはブロック図あるいはその両方を参照して本明細書において説明される。フローチャート説明図またはブロック図あるいはその両方の各々のブロック、およびフローチャート説明図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令により実施されてもよいことが理解されるだろう。
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるために搭載したコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数可)を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持できそして記憶できる実体的なデバイスであってもよい。コンピュータ可読記憶媒体は、例えば、限定しないが、電気的記憶デバイス、磁気的記憶デバイス、光学的記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙は、下記の、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去書込み可能読出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチ・カードまたは記録した命令を有する溝内の凸構造などの機械的にエンコードされたデバイス、および前述のいずれかの適切な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用するように、無線波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通り伝送される電気信号などの、それ自体一時的な信号であるように解釈されるべきではない。
本明細書において説明したコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算/処理デバイスへまたはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくはワイアレス・ネットワークあるいはその組み合わせを介して外部コンピュータもしくは外部記憶デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイアレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組み合わせを含むことができる。各々の計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれの計算/処理デバイス内部のコンピュータ可読記憶媒体に記憶のためにコンピュータ可読プログラム命令を転送する。
本発明の動作を行うためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはスモールトーク(Smalltalk)、C++、等などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含め、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたいずれかのソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、一部がユーザのコンピュータ上でそして一部が遠隔コンピュータ上で、または完全に遠隔コンピュータもしくはサーバ上で実行できる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含め任意のタイプのネットワークを通してユーザのコンピュータに接続されてもよい、または接続が、(例えば、インターネット・サービス・プロバイダを使用するインターネットを介して)外部コンピュータに行われてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含め電子回路は、本発明の態様を実行するために、電子回路を個人専用とするためコンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行できる。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート説明図またはブロック図あるいはその両方を参照して本明細書において説明される。フローチャート説明図またはブロック図あるいはその両方の各々のブロック、およびフローチャート説明図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令により実施されてもよいことが理解されるだろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令はまた、記憶された命令を有するコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含め製造の物品を含むべく、コンピュータ、プログラマブル・データ処理装置または他のデバイスあるいはその組み合わせが特定の方式で機能するように管理できるコンピュータ可読記憶媒体に記憶されてもよい。
コンピュータ可読プログラム命令もまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスへとロードされて、コンピュータで実施されるプロセスを作り出すためにコンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を図解している。この点について、フローチャートまたはブロック図の各々のブロックは、指定された論理機能を実施するための1つまたは複数の実行可能な命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替の実装形態では、ブロックに記した機能は、図に記されたものとは違った順番で生じてもよい。例えば、連続して示された2つのブロックが、実際には、実質的に同時に実行されてもよい、またはブロックが、関係する機能に応じて逆の順番でときには実行されてもよい。ブロック図またはフローチャート説明図あるいはその両方の各々のブロック、およびブロック図またはフローチャート説明図あるいはその両方のブロックの組み合わせが、指定された機能もしくは動作を実行するまたは専用ハードウェアとコンピュータ命令との組み合わせを行う専用ハードウェアに基づくシステムにより実施されてもよいこともまた、特筆されるだろう。

Claims (13)

  1. コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するための方法であって、前記方法が、
    前記コンテナ・ベースの仮想化システムにおいてカーネル・モジュールをコンパイルするためのコンパイリング・コンテナと、カーネル・モジュールを使用して前記カーネルのカーネル機能を拡張するためのアプリケーション・コンテナとを前記コンテナ・ベースの仮想化システムに用意することと、
    前記アプリケーション・コンテナによって、前記コンパイリング・コンテナへ前記カーネル・モジュールを入力することと、
    前記コンパイリング・コンテナを使用して前記カーネル・モジュールをコンパイルすることと、
    前記アプリケーション・コンテナによって、前記コンパイルされたカーネル・モジュールを前記コンパイリング・コンテナから受信することと、
    前記アプリケーション・コンテナによって、前記カーネル機能の前記拡張を可能にするために前記システムの前記カーネルへ前記コンパイルされたカーネル・モジュールをロードすることと
    を含む、方法。
  2. 前記コンパイリング・コンテナを用意することが、コンパイリング・イメージから前記コンテナ・ベースの仮想化システムのところに前記コンパイリング・コンテナをビルドすることを含み、前記コンパイリング・コンテナが前記コンパイリング・イメージの実行可能なインスタンスである、請求項1に記載の方法。
  3. 前記コンパイリング・イメージが、前記コンテナ・ベースの仮想化システムのインストール時に作り出されるまたはソース・データベースからダウンロードされる、請求項2に記載の方法。
  4. 前記コンテナ・ベースの仮想化システムの前記カーネルのさらなる機能拡張のために前記コンパイリング・イメージから前記コンパイリング・コンテナをリビルドすることをさらに含む、請求項2または3に記載の方法。
  5. 前記コンパイリング・コンテナを用意することが、前記コンパイリング・コンテナを受信し、前記コンテナ・ベースの仮想化システムへと前記コンパイリング・コンテナを統合することを含む、請求項1に記載の方法。
  6. 前記コンテナ・ベースの仮想化システムが、コンテナ・マネージャを含み、前記方法が、前記入力するステップの前に、前記コンテナ・マネージャによって前記コンパイリング・コンテナおよび前記アプリケーション・コンテナを起動することをさらに含み、前記起動することが前記コンパイリング・コンテナと前記アプリケーション・コンテナとの間の通信を可能にする、請求項1ないしのいずれかに記載の方法。
  7. 前記コンテナ・ベースの仮想化システムが、コンテナ・マネージャを含み、前記方法が、前記入力するステップの前に、前記コンテナ・マネージャによって前記アプリケーション・コンテナを起動することと、前記アプリケーション・コンテナによって前記コンパイリング・コンテナを起動することとをさらに含み、前記起動することが前記コンパイリング・コンテナと前記アプリケーション・コンテナとの間の通信を可能にする、請求項1ないしのいずれかに記載の方法。
  8. 前記アプリケーション・コンテナを用意することが、前記アプリケーション・コンテナを受信することと、前記アプリケーション・コンテナを前記コンテナ・ベースの仮想化システムへと統合することとを含む、請求項1ないしのいずれかに記載の方法。
  9. 前記コンパイリング・コンテナを削除することをさらに含む、請求項1ないしのいずれかに記載の方法。
  10. 前記アプリケーション・コンテナによりアクセス可能なストレージに前記コンパイルされたカーネル・モジュールを記憶することと、前記カーネル・モジュールが前記カーネルからアンロードされるケースでは、前記アプリケーション・コンテナによって、前記カーネルへと前記記憶されたコンパイルされたカーネル・モジュールをリロードすることとをさらに含む、請求項1ないし9のいずれかに記載の方法。
  11. 前記アプリケーション・コンテナおよび前記コンパイリング・コンテナによりアクセス可能な前記コンテナ・ベースの仮想化システムにディスクを用意することをさらに含み、前記入力することが、前記アプリケーション・コンテナによって、前記ディスクに前記カーネル・モジュールを記憶することと、前記コンパイリング・コンテナによって、前記ディスクから前記カーネル・モジュールを読み出すこととを含む、請求項1ないし10のいずれかに記載の方法。
  12. 前記コンパイリング・コンテナおよび前記アプリケーション・コンテナの各々が、ドッカー・コンテナである、請求項1ないし11のいずれかに記載の方法。
  13. コンテナ・ベースの仮想化システムのカーネルのカーネル機能を拡張するためのコンピュータ・システムであって、前記コンテナ・ベースの仮想化システムの前記カーネルに対してカーネル・モジュールをコンパイルするためのコンパイリング・コンテナと、カーネル・モジュールを使用して前記カーネルのカーネル機能を拡張するためのアプリケーション・コンテナとを含み、前記コンピュータ・システムが、
    前記コンパイリング・コンテナへ前記カーネル・モジュールを入力するために前記アプリケーション・コンテナを制御し、
    前記カーネル・モジュールをコンパイルするために前記コンパイリング・コンテナを制御し、
    前記コンパイルされたカーネル・モジュールを前記コンパイリング・コンテナから受信し、前記コンテナ・ベースの仮想化システムの前記カーネルへ前記コンパイルされたカーネル・モジュールをロードするために前記アプリケーション・コンテナを制御する
    ように構成される、コンピュータ・システム。
JP2022500154A 2019-07-16 2020-07-07 コンテナ・ベースの仮想化システムに関する方法 Active JP7410268B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19186426 2019-07-16
EP19186426.3 2019-07-16
PCT/IB2020/056362 WO2021009612A1 (en) 2019-07-16 2020-07-07 Method for a container-based virtualization system

Publications (3)

Publication Number Publication Date
JP2022540810A JP2022540810A (ja) 2022-09-20
JPWO2021009612A5 JPWO2021009612A5 (ja) 2022-12-02
JP7410268B2 true JP7410268B2 (ja) 2024-01-09

Family

ID=67303414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022500154A Active JP7410268B2 (ja) 2019-07-16 2020-07-07 コンテナ・ベースの仮想化システムに関する方法

Country Status (6)

Country Link
US (1) US11385923B2 (ja)
JP (1) JP7410268B2 (ja)
CN (1) CN114072765B (ja)
DE (1) DE112020002785T5 (ja)
GB (2) GB202200996D0 (ja)
WO (1) WO2021009612A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385923B2 (en) 2019-07-16 2022-07-12 International Business Machines Corporation Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container
IT202100021161A1 (it) 2021-08-04 2023-02-04 Marco Simoncini Sistema di containerizzazione di workstation aziendali con interfacce utente remote a basso costo
CN115113916B (zh) * 2022-06-22 2024-10-11 广州安凯微电子股份有限公司 一种Linux内核解耦方法、装置及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269094A (ja) 2007-04-17 2008-11-06 Toyota Motor Corp 情報処理装置、情報処理装置の最適化方法、プログラム
US20180046457A1 (en) 2017-10-26 2018-02-15 Iomaxis, Llc Method and system for enhancing application container and host operating system security in a multi-tenant computing environment
US20180285139A1 (en) 2017-04-02 2018-10-04 vEyE Security Ltd. Hypervisor-based containers
US20190140983A1 (en) 2017-11-09 2019-05-09 Nicira, Inc. Extensible virtual switch datapath

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5911068A (en) 1995-03-30 1999-06-08 Microsoft Corporation Container independent control architecture
EP1969857B1 (en) * 2006-01-05 2012-03-28 Telefonaktiebolaget LM Ericsson (publ) Media container file management
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
US8533707B2 (en) 2008-03-04 2013-09-10 Lsi Corporation Linux matrix compilation system and method
US9690278B1 (en) * 2014-04-10 2017-06-27 Altera Corporation Method and apparatus for high-level programs with general control flow
US9547738B1 (en) * 2014-05-08 2017-01-17 Altera Corporation Invariant code optimization in high-level FPGA synthesis
US9678787B2 (en) 2014-05-23 2017-06-13 Microsoft Technology Licensing, Llc Framework for authoring data loaders and data savers
US9286085B2 (en) * 2014-06-27 2016-03-15 International Business Machines Corporation Correlating class loader objects across execution environments
CN104572235B (zh) * 2014-12-31 2019-02-26 北京奇虎科技有限公司 一种可加载内核模块的编译方法和装置
US10289398B2 (en) 2015-09-26 2019-05-14 Cisco Technology, Inc. In-service upgrade of kernel loadable modules
CN106569842A (zh) 2015-10-09 2017-04-19 中兴通讯股份有限公司 操作系统的启动方法及装置
CN106095523A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现安卓编译隔离的方法和系统
CN106293756A (zh) 2016-08-16 2017-01-04 汉柏科技有限公司 一种用于快速更换的自定义Linux内核系统
US10949326B2 (en) * 2016-10-05 2021-03-16 B.G. Negev Technologies And Applications Ltd. Method and system for testing and checking the correctness of a computer program during runtime
CN107977572B (zh) * 2016-10-25 2022-11-18 中兴通讯股份有限公司 一种应用程序运行方法和装置、智能终端
CN107423108A (zh) 2017-04-25 2017-12-01 华中科技大学 一种基于安卓设备的arm容器运行环境构建方法
CN107391141A (zh) 2017-07-26 2017-11-24 浪潮软件集团有限公司 一种支持容器运行的全内存操作系统
CN108052327A (zh) 2017-12-11 2018-05-18 北京奇虎科技有限公司 一种内核模块编译、加载方法及装置
CN107943485B (zh) * 2017-12-11 2021-07-20 北京奇虎科技有限公司 一种补丁编译平台及补丁编译方法
CN109240662B (zh) * 2018-08-09 2022-01-25 赛尔网络有限公司 一种基于云平台的软件开发方法、云平台、设备及介质
US20200065124A1 (en) * 2018-08-22 2020-02-27 International Business Machines Corporation Shortening just-in-time code warm up time of docker containers
US10838750B2 (en) * 2019-01-10 2020-11-17 Red Hat, Inc. Combining ahead-of-time compilation and just-in-time compilation to improve application deployment
US11150926B2 (en) * 2019-02-22 2021-10-19 International Business Machines Corporation Native code generation for cloud services
US10949216B2 (en) * 2019-06-17 2021-03-16 Red Hat, Inc. Support for third-party kernel modules on host operating systems
US11385923B2 (en) 2019-07-16 2022-07-12 International Business Machines Corporation Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269094A (ja) 2007-04-17 2008-11-06 Toyota Motor Corp 情報処理装置、情報処理装置の最適化方法、プログラム
US20180285139A1 (en) 2017-04-02 2018-10-04 vEyE Security Ltd. Hypervisor-based containers
US20180046457A1 (en) 2017-10-26 2018-02-15 Iomaxis, Llc Method and system for enhancing application container and host operating system security in a multi-tenant computing environment
US20190140983A1 (en) 2017-11-09 2019-05-09 Nicira, Inc. Extensible virtual switch datapath

Also Published As

Publication number Publication date
CN114072765B (zh) 2023-01-10
WO2021009612A1 (en) 2021-01-21
US11385923B2 (en) 2022-07-12
CN114072765A (zh) 2022-02-18
DE112020002785T5 (de) 2022-02-24
JP2022540810A (ja) 2022-09-20
GB2599335B (en) 2023-11-08
GB202200996D0 (en) 2022-03-09
US20210019169A1 (en) 2021-01-21
GB2599335A (en) 2022-03-30

Similar Documents

Publication Publication Date Title
US11474829B2 (en) Customizing program logic for booting a system
JP7410268B2 (ja) コンテナ・ベースの仮想化システムに関する方法
EP1906302A1 (en) Usage of virtualization software for shipment of software products
JP7311710B2 (ja) 実行時コンテナ
KR20170022028A (ko) 컨테이너 이미지 보안 검사 방법 및 그 장치
US20140033189A1 (en) Providing virtual appliance system firmware images
US11327738B2 (en) Software and firmware updates in a combined single pane of glass interface
US10747523B2 (en) Methods of updating firmware components, computer systems and memory apparatus
US11650810B1 (en) Annotation based automated containerization
US11669325B2 (en) Desired state model for managing lifecycle of virtualization software
WO2020019993A1 (en) Virtual machine container for applications
TW201721412A (zh) 選擇及載入韌體卷區之技術
US20220413821A1 (en) Deploying a machine learning model
CN111782335A (zh) 通过进程内操作系统的扩展应用机制
CN111966470B (zh) 虚拟机监控器的加载方法、装置和电子设备
US20220197633A1 (en) Software defined build infrastructure for hybrid, virtualized and native build environments
US11847611B2 (en) Orchestrating and automating product deployment flow and lifecycle management
US20220308907A1 (en) Injection and execution of workloads into virtual machines
US20210311766A1 (en) Validation and pre-check of combined software/firmware updates
US20140366010A1 (en) Enabling parallel websphere runtime on different computer
US20240329960A1 (en) Updating image files
Kowalkowski et al. Study of a Docker use-case for HEP
Iovanov et al. Containerizing Solution for a Highly Distributed Systems

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221122

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231221

R150 Certificate of patent or registration of utility model

Ref document number: 7410268

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150