JP2022076475A - コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開) - Google Patents

コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開) Download PDF

Info

Publication number
JP2022076475A
JP2022076475A JP2021181945A JP2021181945A JP2022076475A JP 2022076475 A JP2022076475 A JP 2022076475A JP 2021181945 A JP2021181945 A JP 2021181945A JP 2021181945 A JP2021181945 A JP 2021181945A JP 2022076475 A JP2022076475 A JP 2022076475A
Authority
JP
Japan
Prior art keywords
container
manifest
computer
processor
data
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.)
Pending
Application number
JP2021181945A
Other languages
English (en)
Inventor
タラソフ、ヴァシリー
Tarasov Vasily
ルプレヒト、ルーカス
Rupprecht Lukas
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 JP2022076475A publication Critical patent/JP2022076475A/ja
Pending legal-status Critical Current

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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • G06F16/196Specific adaptations of the file system to access devices and non-file objects via standard file system access operations, e.g. pseudo file systems
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】本発明は、コンテナを作成する際に発生する負荷を軽減する、コンピュータ実装方法、コンピュータプログラム製品、もしくはシステムまたはそれらの組み合わせを提供することを目的とする。【解決手段】一実施形態によるコンピュータ実装方法は、コンテナを作成する要求を受信することと、コンテナのコンテナイメージのマニフェストを取得することと、マニフェストを利用してコンテナのファイルシステムをマウントすることと、を含む。【選択図】図7

Description

本開示は、ハードウェア仮想化、より具体的には、コンテナイメージの作成および展開に関する。
最近のアプリケーションの展開は、コンテナの使用に依存していることが多い。例えば、コンテナイメージは中央のレジストリを介して配布され、コンテナを起動するために、ホストはコンテナイメージを取得し、そのコンテナイメージを使用してコンテナのルート・ファイルシステムを作成する。コンテナイメージの数とコンテナ展開の速度は急速に増加している。
しかし、コンテナイメージの現在の実装にはいくつかの問題がある。例えば、コンテナは現在、起動に時間がかかり、I/Oに負荷がかかる。これは、容量の大きなコンテナイメージをダウンロードして保存する必要があり、その結果、ローカルメモリもしくはストレージまたはその両方の使用率が高くなるためである。通信ネットワーク上で容量の大きなコンテナイメージを転送すると、ネットワークの使用率が高くなり、レジストリサービスストレージサブシステムの負荷も高くなる。その結果、現在のコンテナイメージはかさばり、転送や保存にコストがかかる。
したがって、コンテナイメージを格納および配布するための、より高速で効率的な方法が必要である。
本発明は、コンテナを作成する際に発生する負荷を軽減する、コンピュータ実装方法、コンピュータプログラム製品、もしくはシステムまたはそれらの組み合わせを提供することを目的とする。
本開示の一の実施形態によれば、コンピュータ実装方法は、コンテナを作成する要求を受信することと、コンテナのコンテナイメージのマニフェストを取得することと、マニフェストを利用してコンテナのファイルシステムをマウントすることと、を含む。
本開示の他の実施形態によれば、プログラム命令が実装されたコンピュータ可読記憶媒体を含む、コンテナイメージを展開するためのコンピュータプログラム製品であって、コンピュータ可読記憶媒体はそれ自体が非一時的信号であり、プログラム命令はプロセッサによって実行可能であり、プロセッサに、プロセッサによりコンテナを作成する要求を受信することと、プロセッサによりコンテナのコンテナイメージのマニフェストを取得することと、プロセッサによりマニフェストを利用してコンテナのファイルシステムをマウントすることと、を含む方法を実行させる。
本開示のさらに他の実施形態によれば、システムは、プロセッサと、プロセッサと統合されているか、プロセッサによって実行可能であるか、またはプロセッサと統合されていてかつプロセッサによって実行可能であるロジックとを含み、ロジックは、コンテナを作成する要求を受信することと、コンテナのコンテナイメージのマニフェストを取得することと、マニフェストを利用してコンテナのファイルシステムをマウントすることと、を行うよう構成されている。
本開示のさらに他の実施形態によれば、実行中のコンテナにソフトウェア・パッケージをインストールするコマンドを受信することと、ソフトウェア・パッケージのメタデータ・パッケージを取得することと、メタデータ・パッケージを利用して実行中のコンテナにソフトウェア・パッケージをインストールすることと、ソフトウェア・パッケージのインストール中のファイルの必要性を識別することと、メタデータ・パッケージを利用してファイルを取得することと、を含む。
本開示のさらに他の実施形態によれば、プログラム命令が実装されたコンピュータ可読記憶媒体を含む、コンテナイメージを展開するためのコンピュータプログラム製品であって、コンピュータ可読記憶媒体はそれ自体が非一時的信号であり、プログラム命令はプロセッサによって実行可能であり、プロセッサに、プロセッサにより実行中のコンテナにソフトウェア・パッケージをインストールするコマンドを受信することと、プロセッサによりソフトウェア・パッケージのメタデータ・パッケージを取得することと、プロセッサによりメタデータ・パッケージを利用して実行中のコンテナにソフトウェア・パッケージをインストールすることと、プロセッサによりソフトウェア・パッケージのインストール中のファイルの必要性を識別することと、プロセッサによりメタデータ・パッケージを利用してファイルを取得することと、を含む方法を実行させる。
本発明の他の態様および実施形態は、以下の詳細な説明から明らかになるであろうが、図面と併せて考慮すると、本発明の原理を例示として図示する。
図1は、本発明の一実施形態によるクラウドコンピューティング環境を示す。 図2は、本発明の一実施形態による抽象モデルレイヤを示す。 図3は、本発明の一実施形態によるクラウドコンピューティングノードを示す。 図4は、本発明の一実施形態による、コンテナイメージを展開する方法のフローチャートを示す。 図5は、本発明の一実施形態による、オンデマンドコンテナイメージファイルアクセスを実行する方法のフローチャートを示す。 図6は、本発明の一実施形態による、メタデータ・パッケージを使用して実行中のコンテナ内にパッケージをインストールする方法のフローチャートを示す。 図7は、本発明の一実施形態による、例示的なイメージ配信システム構成要素を示す。 図8は、本発明の一実施形態による、例示的なイメージ配信システムの実装を示す。 図9は、本発明の一実施形態による、例示的なシステムアーキテクチャを示す。 図10は、本発明の一実施形態による例示的なパッケージのインストールを示す。
(詳細説明)
以下の説明は、本発明の一般的な原理を説明するためになされたものであり、本明細書に請求される発明概念を限定するものではない。さらに、本明細書に記載された特定の特徴は、様々な可能な組み合わせおよび順列のそれぞれにおいて、他の記載された特徴と組み合わせて使用することができる。
本明細書中で特に定義されない限り、全ての用語は、本明細書から暗示される意味ならびに当業者によって理解される意味、もしくは辞書、論文などで定義される意味またはその両方を含めて、可能な限り広い解釈を与えられるべきである。
本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈が明確に他のことを示さない限り、複数形も含むことを意図している。本明細書で使用される場合、「含む(comprises)」という用語もしくは「含む(comprising)」という用語またはその両方は、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせの存在を指定するが、一つ以上の他の機能、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせの存在または追加を排除するものではない。
以下の説明は、コンテナイメージを作成および展開するいくつかの実施形態を開示する。
一つの一般的な実施形態では、コンピュータ実装方法は、コンテナを作成する要求を受信することと、コンテナのコンテナイメージのマニフェストを取得することと、マニフェストを利用してコンテナのファイルシステムをマウントすることと、を含む。
他の一般的な実施形態では、プログラム命令が実装されたコンピュータ可読記憶媒体を含む、コンテナイメージを展開するためのコンピュータプログラム製品であって、コンピュータ可読記憶媒体はそれ自体が非一時的信号であり、プログラム命令はプロセッサによって実行可能であり、プロセッサに、プロセッサによりコンテナを作成する要求を受信することと、プロセッサによりコンテナのコンテナイメージのマニフェストを取得することと、プロセッサによりマニフェストを利用してコンテナのファイルシステムをマウントすることと、を含む方法を実行させる。
他の一般的な実施形態では、システムは、プロセッサと、プロセッサと統合されているか、プロセッサによって実行可能であるか、またはプロセッサと統合されていてかつプロセッサによって実行可能であるロジックとを含み、ロジックは、コンテナを作成する要求を受信することと、コンテナのコンテナイメージのマニフェストを取得することと、マニフェストを利用してコンテナのファイルシステムをマウントすることと、を行うよう構成されている。
他の一般的な実施形態では、コンピュータ実装方法は、実行中のコンテナにソフトウェア・パッケージをインストールするコマンドを受信することと、ソフトウェア・パッケージのメタデータ・パッケージを取得することと、メタデータ・パッケージを利用して実行中のコンテナにソフトウェア・パッケージをインストールすることと、ソフトウェア・パッケージのインストール中のファイルの必要性を識別することと、メタデータ・パッケージを利用してファイルを取得することと、を含む。
他の一般的な実施形態では、プログラム命令が実装されたコンピュータ可読記憶媒体を含む、コンテナイメージを展開するためのコンピュータプログラム製品であって、コンピュータ可読記憶媒体はそれ自体が非一時的信号であり、プログラム命令はプロセッサによって実行可能であり、プロセッサに、プロセッサにより実行中のコンテナにソフトウェア・パッケージをインストールするコマンドを受信することと、プロセッサによりソフトウェア・パッケージのメタデータ・パッケージを取得することと、プロセッサによりメタデータ・パッケージを利用して実行中のコンテナにソフトウェア・パッケージをインストールすることと、プロセッサによりソフトウェア・パッケージのインストール中のファイルの必要性を識別することと、プロセッサによりメタデータ・パッケージを利用してファイルを取得することと、を含む方法を実行させる。
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
特性は以下の通りである。
オンデマンド・セルフサービス:クラウドのコンシューマは、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数のコンシューマに提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般にコンシューマは、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただしコンシューマは、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。コンシューマにとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することができる。
サービスモデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):コンシューマに提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個他のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、コンシューマが作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアをコンシューマが展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。コンシューマは、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
展開モデルは以下の通りである。
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織またはサードパーティーによって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個他の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで、図1に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は一つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウドコンシューマが使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、一つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウドコンシューマはこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図1に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
ここで、クラウドコンピューティング環境50(図1)によって提供される機能的抽象化レイヤのセットを図2に示す。なお、図2に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、ある場所または物件における物品または資産の自動検出および自動カタログ化または目録化96が含まれる。
次に、図3を参照すると、クラウドコンピューティングノードの一例の概略図が示されている。クラウドコンピューティングノード10は、適切なクラウドコンピューティングノードの一例に過ぎず、本明細書に記載する本発明の実施形態の使用または機能の範囲に関する制限を示唆するものではない。いずれにしても、クラウドコンピューティングノード10は、上述の機能のいずれかを実装もしくは実行またはその両方を行うことができる。
クラウドコンピューティングノード10には、コンピュータシステム/サーバ12があり、これは、他の多数の汎用目的または特殊目的コンピューティングシステム環境または構成で動作可能である。コンピュータシステム/サーバ12とともに使用するのに適しているよく知られたコンピュータシステム、環境、もしくは構成またはその両方の例としては、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能なコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および上記のシステムまたはデバイスのいずれかを含む分散クラウドコンピューティング環境などが挙げられるが、これらに限定されない。
コンピュータシステム/サーバ12は、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータシステム実行可能命令の一般的な文脈で記述することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータシステム/サーバ12は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散型クラウドコンピューティング環境で実行することができる。分散クラウドコンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモートコンピュータシステム記憶媒体の両方に配置することができる。
図3に示すように、クラウドコンピューティングノード10内のコンピュータシステム/サーバ12は、汎用コンピューティングデバイスの形態で示されている。コンピュータシステム/サーバ12の構成要素は、一以上のプロセッサまたは処理ユニット16、システムメモリ28、およびシステムメモリ28を含む種々のシステム構成要素をプロセッサ16に結合するバス18を含むが、これらに限定されない。
バス18は、種々のバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート(AGP)、およびプロセッサまたはローカルバスを含む複数種類のバス構造のうち一つ以上の任意のものを表す。一例として、かかるアーキテクチャは、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスを含む。
コンピュータシステム/サーバ12は、典型的には、種々のコンピュータシステム可読媒体を含む。このような媒体は、コンピュータシステム/サーバ12によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体および不揮発性媒体の両方と、取り外し可能媒体および取り外し不能媒体の両方とを含む。
システムメモリ28は、RAM30もしくはキャッシュメモリ32またはその両方など、揮発性メモリとしてのコンピュータ可読媒体を含むことができる。コンピュータシステム/サーバ12はさらに、その他の取り外し可能/取り外し不能コンピュータ記憶媒体および揮発性/不揮発性コンピュータ記憶媒体を含んでよい。単なる例ではあるが、取り外し不能な不揮発性磁気媒体(不図示、典型的には「ハードドライブ」と呼ばれる)との間の読み出しおよび書き込みのために、記憶システム34を設けることができる。図示していないが、取り外し可能な不揮発性磁気ディスク(例えば、フロッピーディスク)との間の読み出しおよび書き込みのための磁気ディスクドライブ、CD-ROM、DVD-ROMまたは他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出しおよび書き込みのための光ディスクドライブを設けることができる。これらの例において、それぞれを、一つ以上のデータ媒体インタフェースによってバス18に接続することができる。以下で詳述するように、メモリ28は、本発明の実施形態の機能を実行するように構成された一つ以上のプログラムモジュールを有する少なくとも一つのプログラム製品を含んでよい。
一つ以上のプログラムモジュールを有するプログラム/ユーティリティ40は、例えば、限定ではなく、オペレーティングシステム、一つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ28に格納されてもよい。オペレーティングシステム、一つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータまたはそれらの組合せの各々は、ネットワーク環境の実装を含むことができる。プログラムモジュール42は、一般に、本明細書に記載される本発明の実施形態の機能もしくは方法またはその両方を実行する。
コンピュータシステム/サーバ12は、キーボード、ポインティングデバイス、ディスプレイ24などの一つ以上の外部装置14、ユーザとコンピュータシステム/サーバ12とのインタラクションを可能にする一つ以上の装置、もしくは、コンピュータシステム/サーバ12と一つ以上の他のコンピューティング装置との通信を可能にする任意の装置(例えば、ネットワークカード、モデムなど)、またはこれらの組み合わせと通信してもよい。かかる通信は、入力/出力(I/O)インタフェース22を介して行うことができる。さらにまた、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して、ローカルエリアネットワーク(LAN)、汎用広域ネットワーク(WAN)、もしくはパブリックネットワーク(例えばインターネット)またはこれらの組み合わせなど、一つ以上のネットワークと通信することもできる。図示するように、ネットワークアダプタ20は、バス18を介してコンピュータシステム/サーバ12の他のコンポーネントと通信する。なお、図示は省略するが、他のハードウェアコンポーネントもしくはソフトウェアコンポーネントまたはその両方を、コンピュータシステム/サーバ12と共に使用できる。その一例としては、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステムなどが含まれる。
図4を参照すると、一実施形態による方法400のフローチャートが示されている。方法400は、様々な実施形態において、特に図1~3および7~10に示される環境のいずれかにおいて、本発明に従って実行され得る。もちろん、図4に具体的に記述されたものよりも多いまたは少ない動作が、本説明を読むと当業者に理解されるように、方法400に含まれてもよい。
方法400の各ステップは、動作環境の任意の適切な構成要素によって実行することができる。例えば、様々な実施形態では、方法400は、一以上のサーバ、コンピュータ、または内部に一以上のプロセッサを有する他の装置によって部分的または全体的に実行されてもよい。プロセッサ、例えば、ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも一つのハードウェア構成要素を有する処理回路、チップ、もしくはモジュールまたはその組み合わせは、方法400の一つ以上のステップを実行するために任意のデバイスで利用され得る。例示的なプロセッサは、限定されるものではないが、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、これらの組み合わせ、または当技術分野で公知の任意の他の適切なコンピューティングデバイスを含む。
図4に示すように、方法400は、動作402で開始することができ、ここで、コンテナを作成する要求が受信される。一実施形態では、要求はユーザから受信することができる。他の実施形態では、要求は、コンピューティングノード(例えば、分散コンピューティングネットワーク、クラウドベースのコンピューティング環境など)のクラスタで受信されてもよい。
さらに、一実施形態では、コンテナは、オペレーティングシステム(OS)レベルの仮想化を使用して実装することができ、自己完結型ソフトウェア・パッケージ(例えば、イメージ)に依存することができる。他の実施形態では、コンテナを作成することは、クラスタ内の複数のコンピューティングノードの一つにコンテナのファイルシステムをマウントすること、コンテナ内に一つ以上のファイル(実行可能ファイル、ライブラリ、データなどを含む)をロードすること、もしくはマウントされたファイルシステムを利用してコンテナ内で一つ以上のアプリケーションを実行すること、などの組み合わせを含み得る。
さらに、方法400は、動作404に進み、コンテナのコンテナイメージのためのマニフェストが取得される。一実施形態では、コンテナイメージは、コンピューティングノードのクラスタの一つでコンテナを作成するために必要なすべてのファイルを含むことができる。例えば、コンテナイメージは、複数のファイル(例えば、コード、ランタイム、システムツール、システムライブラリおよび設定等を含む実行可能パッケージ)を含むことができる。
さらに、一実施形態では、コンテナイメージのためのマニフェストは、コンテナイメージ内の複数のファイルを記述するメタデータを含むことができる。例えば、マニフェストは、ファイル名のリスト(例えば、コンテンツ識別子)、それらのファイルに関連する所有権もしくは許可データまたはその組み合わせなどを含み得る。他の例では、マニフェストは、ファイルのためのコンテンツベース・アドレス(例えば、ファイルハッシュ、複数のファイルが格納されている場所へのポインタなど)を含み得る。さらに他の例では、マニフェストは、ファイルが格納される場所へのポインタをそれぞれ含む複数のファイルスタブを格納することができる。
また、一実施形態では、マニフェストは、コンテナイメージ内の複数のファイルを記述するメタデータを含むことができるが、複数のファイル自体は含まない。他の実施形態では、ファイルは、コンテンツストア(例えば、集中化されたオブジェクト記憶装置)にリモートで格納されてもよい。さらに他の実施形態では、一つ以上のファイルをローカルに格納することができる(例えば、コンテナが作成されたノードなど)。
さらに、一実施形態では、マニフェストはリポジトリから取得されてもよい。例えば、クラスタ内のノードにコンテナを作成するタスクを割り当て、ノードから物理的に離れたマニフェストリポジトリ(データベース等)からコンテナのコンテナイメージのためのマニフェストを取得することができる。
さらに、一実施形態では、マニフェストは、コンテナが作成されているノードからローカルに取得することができる。例えば、コンテナを作成するタスクを割り当てられたノードは、キャッシュされたデータでマニフェストを検索し、キャッシュでマニフェストが見つかった場合、キャッシュされたマニフェストをキャッシュから取得できる。他の例では、マニフェストがキャッシュ内に見つからない場合、マニフェストはノードとは他の場所にあるリポジトリから取得される。
さらに、方法400は、マニフェストを利用してコンテナのファイルシステムがマウントされる動作406に進むことができる。一実施形態では、マニフェストは、コンテナのファイルシステムを作成(例:mount)するのに十分なデータを含むことができる。他の実施形態では、マニフェストは、一つ以上のiノード記述子およびファイルハッシュを含むことができる。さらに他の実施形態では、iノード記述子は、コンテナのファイルシステムをマウントするために使用されるメタデータを含むことができる。他の実施形態では、ファイルシステムは、コンピューティングノード(例えば、コンテナを作成するタスクを割り当てられたノードなど)のクラスタのノードにマウントされてもよい。
このようにして、コンテナのファイルシステムは、完全なコンテナイメージ自体ではなく、コンテナイメージのマニフェストを使用してマウントすることができる。マニフェストには、ファイルシステムのマウントに必要なメタデータと、コンテナイメージ内に含まれる追加ファイルデータへのポインタだけを含めることができる。その結果、マニフェストのサイズはコンテナイメージ自体よりもはるかに小さくなる可能性がある。コンテナのファイルシステムをマウントするために、イメージの代わりにマニフェストを取得することによって、ノードが使用する帯域幅を大幅に削減することができ、これによって、ノードによって使用されるコンピューティングハードウェアの性能、ならびに、ノードと、マニフェストリポジトリ、コンテナイメージリポジトリなどのデータストアとの間のデータの伝送を容易にする通信ネットワークを実装するために使用されるハードウェアコンポーネントの性能を向上させることができる。
次に、図5を参照すると、一実施形態による、オンデマンドコンテナイメージファイルアクセスを実行するための方法500のフローチャートが示される。方法500は、様々な実施形態において、特に図1~3および7~10に示される環境のいずれかにおいて、本発明に従って実行され得る。もちろん、図5に具体的に記載されたものより多い又は少ない動作が、本説明を読むと当業者に理解されるように、方法500に含まれてもよい。
方法500の各ステップは、動作環境の任意の適切な構成要素によって実行することができる。例えば、様々な実施形態では、方法500は、一以上のサーバ、コンピュータ、または内部に一以上のプロセッサを有するいくつかの他の装置によって部分的または全体的に実行されてもよい。プロセッサ、例えば、ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも一つのハードウェア構成要素を有する処理回路、チップ、もしくはモジュールまたはその組み合わせは、方法500の一つ以上のステップを実行するために任意のデバイスで利用され得る。例示的なプロセッサは、限定されるものではないが、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、これらの組み合わせ、または当技術分野で公知の任意の他の適切なコンピューティングデバイスを含む。
図5に示すように、方法500は、動作502で開始することができ、ここで、コンテナのコンテナイメージ内のデータへのアクセス要求は、コンテナのマウントされたファイルシステムによって識別される。一実施形態では、データへのアクセス要求は、ファイル読み取り要求を含むことができる。他の実施形態では、データへのアクセス要求は、コンテナイメージ内のデータを読み取るためのコンテナ内のアプリケーションからの要求を含むことができる。
さらに、一実施形態では、ファイルシステムは、コンピューティングノードのクラスタのノードでコンテナのためにマウントされてもよい。他の実施形態では、ファイルシステムは、コンテナを作成する要求に応答してコンテナにマウントされてもよい。
さらに、方法500は、動作504に進み、データがキャッシュにローカルに位置していると決定されたことに応答して、データがキャッシュから取り出される。例えば、キャッシュは、クラスタのノード内の標準データ記憶装置よりも高速な高速低レイテンシのメモリを含むことができる。他の例では、キャッシュは揮発性メモリを含むことができる。
さらに、方法500は、動作506に進み、データの位置がコンテナイメージのためのマニフェストを利用して決定され、データがキャッシュに位置していないとの決定に応答して、データの位置を利用してコンテンツストアからデータがリモートで取得される。一実施形態では、データの位置は、マニフェスト内に格納されたメタデータ内に含まれてもよい。例えば、メタデータは、コンテナイメージ内の複数のファイルを記述することができる。他の実施形態では、マニフェストは、ファイルのコンテンツベース・アドレス(例えば、ファイルハッシュ、複数のファイルが格納されている場所へのポインタなど)を含むことができる。他の実施形態では、コンテンツストアは、クラスタのノードから物理的に分離されていてもよく、通信ネットワークを介してアクセスされてもよい。
また、一実施形態では、ファイルシステムは、クラスタの所定のノードにマウントされてもよい。他の実施形態では、イメージのためのマニフェストが、データがキャッシュにローカルに格納されていることを示すことを決定することに応答して、データをキャッシュから取得することができる。さらに他の実施形態では、イメージのためのマニフェストが、データがキャッシュにローカルに格納されていないことを示すことを決定することに応答して、通信ネットワークを利用して、コンテンツストアからデータを取得することができる。例えば、コンテンツストアは、コンテナイメージに関連付けてデータを格納することができる。
さらに、一実施形態では、取得されたデータは、マウントされたファイルシステムによって使用されてもよい。例えば、取得されたデータは、マウントされたファイルシステムを利用して、ノード内で実行されているアプリケーションに提供され得る。
このようにして、コンテナイメージのためのマニフェストは、コンテナのマウントされたファイルシステムが、コンテナイメージ内のデータをオンデマンドで取得することを可能にすることができ、ファイルシステムがマウントされているノードにコンテナイメージをローカルに格納する必要がない。これにより、ノードにコンテナを実装するために必要なデータ量が削減され、ノードのパフォーマンスが向上する場合がある。これはまた、ノード上にコンテナを実装するためにノードに転送される必要のあるデータの量を減少させることができ、これは、ノードとコンテナイメージストアとの間のネットワークトラフィックの量を減少させることができ、それによって、ネットワーク通信などを実装する一つ以上のハードウェアコンポーネントの性能を向上させることができる。
次に、図6を参照すると、一実施形態による、メタデータ・パッケージを使用して実行中のコンテナ内にパッケージをインストールする方法600のフローチャートが示される。方法600は、様々な実施形態において、特に図1~3および7~10に示される環境のいずれかにおいて、本発明に従って実行され得る。もちろん、図6に具体的に記載されたものよりも多いまたは少ない動作が、本説明を読むと当業者に理解されるように、方法600に含まれてもよい。
方法600の各ステップは、動作環境の任意の適切な構成要素によって実行することができる。例えば、様々な実施形態では、方法600は、一以上のサーバ、コンピュータ、または内部に一以上のプロセッサを有する他の装置によって部分的または全体的に実行されてもよい。プロセッサ、例えば、ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも一つのハードウェア構成要素を有する処理回路、チップ、もしくはモジュールまたはその組み合わせは、方法600の一つ以上のステップを実行するために任意のデバイスで利用され得る。例示的なプロセッサは、限定されるものではないが、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、これらの組み合わせ、または当技術分野で公知の任意の他の適切なコンピューティングデバイスを含む。
図6に示すように、方法600は、動作602で開始することができ、そこで、実行中のコンテナにソフトウェア・パッケージをインストールするためのコマンドが受信される。一実施形態では、コマンドは、ユーザ、アプリケーションなどから受信されてもよい。他の実施形態では、コマンドは、コンピューティングノード(例えば、分散コンピューティングネットワーク、クラウドベースのコンピューティング環境など)のクラスタで受信されてもよい。
さらに、一実施形態では、ソフトウェア・パッケージは、コンピューティングノードのクラスタのうちの一つで実行中のコンテナにソフトウェア・パッケージを追加するために必要なすべてのファイルを含むことができる。他の実施形態では、実行中のコンテナは、コンテナイメージを利用するノードにインストールされたコンテナを含むことができる。例えば、クラスタのノードを割り当ててコンテナイメージを作成することができる。
さらに、方法600は、動作604で開始して、ソフトウェア・パッケージのメタデータ・パッケージが取得される。一実施形態では、メタデータ・パッケージは、公開リポジトリ(例えば、公開パッケージのメタデータストアなどのデータベース)から取得することができる。例えば、公開パッケージのメタデータストアは、メタデータ・パッケージが指すファイルを格納する公開パッケージのデータストアとは物理的に分離されている場合がある。
さらに、一実施形態では、メタデータは、ファイルのリストおよびファイルの内容のハッシュを含むことができる。他の実施形態では、メタデータは、ファイル自体ではなく、各ファイルの位置を含むことができる。
また、一実施形態では、ノードは、メタデータ・パッケージがキャッシュ内に位置するかどうかを確認するために、最初にノードのローカル・キャッシュをチェックすることができる。例えば、メタデータ・パッケージがキャッシュ内に位置すると決定された場合、メタデータ・パッケージをキャッシュから取得することができる。他の例では、メタデータ・パッケージがキャッシュ内に位置すると決定されない場合、メタデータ・パッケージは、キャッシュおよびノードとは他の公開リポジトリから取得されてもよい。
さらに、方法600は、メタデータ・パッケージを利用して、ソフトウェア・パッケージが実行中のコンテナにインストールされる動作606に進むことができる。一実施形態では、ソフトウェア・パッケージのインストールは、メタデータ・パッケージ内のメタデータをクラスタのノード(例えば、割り当てられたノードなど)にインストールすることを含むことができる。
さらに、一実施形態では、メタデータは、データへのポインタを有する一つ以上のスタブファイルとしてノード内にインストールされてもよい。例えば、各スタブファイルは、コンテナイメージ内のファイルを表すことができる。他の例では、各スタブファイルはファイル自体ではなく、ファイルのメタデータ・プレースホルダーであってもよい。さらに他の例では、各スタブファイルは、ファイルが格納されている場所(例えば、他のファイルリポジトリやキャッシュなど)を指し示すことができる。
さらに、一実施形態では、メタデータ内のファイルの内容のハッシュをソフトウェア・パッケージ内のポインタとして使用することができる。
また、方法600は、動作608に進み、ソフトウェア・パッケージのインストール中にファイルの必要性が識別される。一実施形態では、ソフトウェア・パッケージ内の特定のファイルに対する要求は、ソフトウェア・パッケージのインストール中に受信され得る。例えば、ソフトウェア・パッケージをインストールしているコンパイラから要求を受け取ることができる。他の実施形態では、ソフトウェア・パッケージのインストールは、メタデータ・パッケージ内に存在しないファイルを必要とする場合がある。
さらに、方法600は、動作610に進み、メタデータ・パッケージを利用してファイルが取得される。一実施形態では、ファイルの必要性の識別に応答して、コンテナイメージが作成されているノードのローカルキャッシュを取得して、ファイルがキャッシュ内に位置しているかどうかを確認することができる。他の実施形態では、ファイルがキャッシュに位置する場合、ファイルはキャッシュから取得されてもよい。さらに他の実施形態では、ファイルがキャッシュに配置されていない場合、ファイルリポジトリ(例えば、キャッシュやノードとは他の公開リポジトリ)から取得することができる。
さらに、一実施形態では、ファイルのメタデータプレースホルダー(例えば、ファイルのスタブ)をノードで識別することができる。他の実施形態では、ファイルの位置へのポインタをメタデータプレースホルダーに関連付けることができる。さらに他の実施形態では、ポインタを使用して、ファイルの場所を決定し、ファイルを取り出すことができる。さらに他の実施形態では、ファイルを取得して、ソフトウェア・パッケージのインストールを続行もしくは完了またはその両方をするために使用することができる。
このようにして、メタデータ・パッケージは、コンテナイメージ内に含まれる実際のファイルを除いて、ファイル・メタデータのみを含むことができる。その結果、メタデータ・パッケージをインストールする場合、データ自体をコピーする必要はなく、メタデータおよび関連するポインタをコピーすることだけが要求される。ソフトウェア・パッケージのインストール中に必要なデータは、必要に応じてオンデマンドで取得され得る。このことは、ソフトウェア・パッケージのインストールに必要な記憶容量が減少し、ソフトウェア・パッケージのインストールを実行するハードウェアコンピューティングデバイスの性能を向上させる。このことは、迅速かつ効率的な方法でイメージを作成するのにも役立つ。このことはまた、ソフトウェア・パッケージのインストールに必要な帯域幅の量を減少させ、それによって、ソフトウェア・パッケージのインストール中に使用される一つ以上のネットワーク通信を実装する一つ以上のハードウェアコンポーネントの性能を向上させることができる。
(効率的なランタイムイメージの配布、展開、運用)
イメージ配布にはいくつかの一貫した特徴がある。例えば、配布されたイメージの複製レベルが高く、実際にコンテナによって使用されるイメージデータの割合が低い場合などがある。これらの洞察を活用して、イメージの配布と展開を改善することができる。
一実施形態では、各イメージは、ファイル名およびメタデータをリストする小さなマニフェストによって表され得る。さらに、マニフェストだけで、ファイル・データをフェッチすることなく、ワーカーノード上にファイルシステムを作成(例えば、マウント)し、読み取り専用メタデータ操作をサポートすることができる。
さらに、一実施形態では、各コンテナファイルについて、マニフェストは、ファイルのデータのコンテンツベース・アドレスを格納する。ファイル内容自体は、例えばオブジェクトストレージに格納される。ホストによって実際にアクセスされるデータのみが、オンデマンド方式でホストに転送される。イメージを実装するノードのローカルメモリとストレージには重複したファイルは保持されず、レジストリにも重複は含まれない。
一実施形態では、イメージを格納および配布する方法が提供される。さらに、ファイルシステムのメタデータのみを使用してコンテナを起動する方法も提供されている。さらに、コンテナデータをオンデマンドでダウンロードする方法が提供される。さらに、コンテンツ・アドレス・ストレージを使用してイメージを転送する際に重複を回避するための方法が提供される。
また、ホスト側のイメージキャッシュを管理する方法が提供される。さらに、従来のイメージをコンテンツアドレス指定可能なイメージに透過的に変換する方法が提供される。
図7は、一実施形態による、例示的なイメージ配布システム構成要素700を示す。図示するように、マニフェストストア702は、複数のイメージマニフェスト704を格納する。各イメージマニフェスト704は一つ以上のiノード記述子706を含む。イメージマニフェスト704は、ファイルシステム708を指定されたホスト710にマウントするために使用される。コンテナイメージ内のファイルが必要な場合、iノード記述子706は、コンテナイメージのイメージマニフェスト704内で識別され、コンテンツストア712からファイルを取得するために使用される。
図8は、一実施形態による、例示的なイメージ配布システム実装800を示す。図示のように、ホスト802でコンテナを作成する要求に応答して、コンテナのコンテナイメージのマニフェスト804がマニフェストストア806から取得される。このマニフェスト804は、コンテナホスト802内のファイルシステム808をマウントするのに使用される。
マウントされたファイルシステム808内の最初のファイルに対する要求に応答して、ファイルシステム808内の第1ファイル810のスタブは、ファイルが取得される共有キャッシュ812を指し示す。マウントされたファイルシステム808内の第2ファイルに対する要求に応答して、ファイルシステム808内の第2ファイル814のスタブは、共有キャッシュ812を指し示さない。その結果、マニフェスト804内で第2のファイルのコンテンツベース・アドレスが識別され、コンテンツストア816から第2のファイルを取得するために使用される。
(例示的なコンテナ起動およびファイル操作)
一実施形態では、起動中に、ユーザは、イメージAからコンテナを起動することを要求する。イメージAのマニフェストがローカルに存在する場合、そのマニフェストを使用してコンテナのファイルシステムがマウントされる。マニフェストがローカルに存在しない場合、マニフェストはマニフェストストアから取得され、マニフェストを使用してコンテナのファイルシステムがマウントされる。ファイルシステムがマウントされた後、open、stat、readdirなどの操作は完全にローカルで実行されうる(例えば、開始されたコンテナを持つノードに対してのローカルなど)。
他の実施形態では、アプリケーションは、ファイルFからデータを読み出すことを要求する。これに応答して、ファイルFのコンテンツハッシュをマニフェスト内で使用して、ファイルFがローカルで利用可能かどうかが決定される(例えば、ノードのキャッシュ内など)。ファイルFがローカルで使用可能な場合、要求されたデータはアプリケーションに返される。ファイルFがローカルで使用できない場合、欠落したファイルコンテンツがコンテンツストアからフェッチされ、要求されたデータがアプリケーションに戻される。
さらに他の実施形態では、アプリケーションは、ファイルFにデータを書き込むことを要求する。書き込みが完全な上書きである場合、コピーは、アプリケーションが提供するデータで更新される。他の実施形態では、更新は、明示的に要求されない限り、コンテンツストアに進まない。他の実施形態では、ルートファイルシステムの変更は、コンテナが停止すると失われる。その後、書き込みの確認がアプリケーションに送信される。
書き込みが完全な上書きでない場合は、マニフェスト内のファイルFのコンテンツハッシュを使用して、ファイルの内容がローカルで使用可能かどうかが決定される。ファイルの内容がローカルで使用可能である場合は、Fのコンテンツのコピーが作成され、そのコピーがアプリケーションが提供するデータで更新され、書き込みの確認がアプリケーションに送信される。コンテンツがローカルで利用できない場合、欠落したファイルコンテンツがコンテンツストアからフェッチされ、Fのコンテンツのコピーが作成され、コピーがアプリケーションが提供するデータで更新され、書き込みの確認がアプリケーションに送信される。
さらに他の実施形態では、メタデータ更新(例えば、create、delete、rename、directory operations、setattrなど)は、コンテンツまたはマニフェスト・ストアとの通信を必要としない。
(コンテンツアドレス指定可能な共有キャッシュの管理)
一実施形態では、キャッシュは揮発性メモリ内に存在する。一般的なディスクレスの設定がサポートされている場合もあれば、ローカルストレージキャッシュのオプションのサポートが存在する場合もある。メモリキャッシュサイズは、コンテナランタイム開始時に固定され、コンテナオーケストレータ(K8s)は、コンテナをスケジューリングするときにキャッシュに使用されるメモリを考慮する。
さらに、以下のような階層型メモリ・キャッシュ・エビクション順序が存在してもよい。
T1:ローカルにプルされたマニフェストによって参照されていないBLOB(イメージが削除された)。
T2:「実行中」のイメージによって参照されていないBLOB(ただし、ローカルマニフェストによって参照されている)。
T3:オープン・ファイルから参照されていない変更されていないBLOB(ただし、イメージの実行によってされている)。
T4:その他の変更されていないBLOB。
追跡参照およびガベージコレクション技術も使用され得る。LRUまたはARCエビクション・ポリシーは、その階層内で使用され得る。キャッシュ・スラッシングまたはスペース不足の状況を処理するために、入出力がブロックされたり、ENOSPCのエラーが提供されたりすることがある。イメージ内で頻繁に使用されるファイルのプリフェッチも実行され得る(例えば、マニフェスト拡張などの利用)。
(既存のレジストリとの互換性)
他のグラフドライバ(例えば、overlay、dmなど)を使用して標準イメージを使用することもできる。イメージコンバージョンサービス(ICS)は、従来のレジストリからイメージをダウンロードしたり、tarballを解凍したり、欠落したファイルをBLOBとしてコンテンツストアにアップロードしたり、マニフェストを生成したり、マニフェストストアにアップロードしたりすることができる。
ICSは、通常のワーカーノードにコンバージされること、もしくは、専用のノードセットで実行されることができる。コンバージ設定では、ワーカノードは通常のイメージを受け取り、イメージに変換し、ファイルシステムを使用してすぐにコンテナを起動できる。欠落したコンテンツおよびマニフェストの適切なストアへのアップロードは、非同期に実行され得る。
(メタデータソフトウェア・パッケージによる高速コンテナイメージの構築)
コンテナイメージの構築は、いくつかの手順で構成される。
ベースイメージを取得する。
リモートリポジトリからイメージに追加ソフトウェアをインストールする。
ローカルソフトウェアとデータをイメージにコピーする。
追加イメージアーティファクトの抽出/構築/生成をする。
大量のデータがコピー/取得される必要があるため、入力/出力(ネットワークおよびストレージ)の負荷が高いため、この構築プロセスには時間がかかる場合がある。大部分の時間は、パッケージの取得とインストールに費やされる(yum、aptなど)。また、イメージが繰り返し構築される場合(例えば、CI/CDパイプラインまたはイメージテストの間)、オーバーヘッドが増加する。この問題は、OCI準拠のイメージで発生する。
その結果、コンテナイメージを構築するための高速な方法が必要になる。
一実施形態では、同じコンテンツがプライベートデータストアに存在しない場合は、ソフトウェア・パッケージ(例えば、RPM、DEBなど)をインストールおよび管理するための方法が提供され、この方法は、公開パッケージデータストア、公開パッケージ・メタデータストア、およびプライベートデータストアからなるパッケージ・リポジトリを維持することと、ソフトウェア・パッケージをインストールすることおよび公開メタデータストアからパッケージ化されたファイルとそのコンテンツハッシュのリストを含むパッケージ・メタデータだけをダウンロードすることと、コンテンツハッシュを介したデータへのポインタを持つスタブファイルとしてのファイルシステムにおけるメタデータをインストールすることと、公開データストアからプライベートデータストアに非同期またはオンデマンドでデータを取得することと、を含む。
他の実施形態では、メタデータ・パッケージを作成および共有するための方法が提供され、方法は、パッケージ仕様ファイルまたは既存のパッケージにリストされたファイルをトラバースすること、各ファイルのコンテンツIDを計算すること、およびIDをパッケージ・メタデータに追加することと、コンテンツが公開データストアにまだ存在していない場合のみ、ファイルを公開データストアにアップロードする間に、新しいパッケージ・メタデータを公開メタデータストアにアップロードすることと、を含む。
さらに、一実施形態では、パッケージは、実際のコンテンツを含まないファイルメタデータのみの集合である。パッケージのインストールは、メタデータのコピーのみを必要とし、パッケージ・リポジトリからのメタデータの取得はリソース効率がよく、高速である。パッケージのインストール中にストレージやネットワーク入出力は必要なく、パッケージデータが必要な時および場合は、ファイルメタデータを使用して必要なデータが取得される。
図9は、一実施形態による例示的なシステムアーキテクチャ900を示す。図示のように、パッケージデータを格納するレポストア902は、メタデータ・パッケージを格納するレポパッケージストア904およびコンテナによってアクセスされるパッケージデータをローカルに格納するクラスタストア906とは別個に位置する。コンテナホスト908は、第1パッケージを使用してイメージを構築するための命令910を受信する。第1パッケージのメタデータ912は、イメージを構築するためにレポパッケージストア904から取得される。
さらに、イメージの構築中にファイルが必要な場合、クラスタストア906が最初にチェックされる。ファイルがクラスタストア906に存在する場合、ファイルは、コンテナホスト908のフェッチャモジュール914によってクラスタストア906から取得される。ファイルがクラスタストア906に存在しない場合、ファイルは、コンテナホスト908のフェッチャモジュール914によって、レポストア902から取得される。
図10は、例示的な一実施形態による例示的なパッケージインストール1000を示す。図示のように、メタデータ・パッケージ1002はリポジトリからダウンロードされる。また、メタデータ・パッケージ1002内にリストされた全ディレクトリ1004が作成される(例えば、POSIX createの使用)。また、メタデータ・パッケージ1002内にリストされている通常ファイルごとにファイルが作成され、ioctlシステムコールによりそのFILELINKが設定される。FILELINKに続いて、コンテンツがコンテンツストア1006に存在しない場合は、コンテンツが取得される。一実施形態では、ioctlシステムコールがリスト全体に適用され、すべてのコンテンツを作成することができる。
一実施形態では、既存の(インストール前/後の)スクリプトレットは通常通りファイルシステムと通信することができ、スクリプトレットがまだフェッチされていないファイルを必要とする場合、パッケージ・マネージャは必要なデータが取り出されるまで待機する。
(パッケージの作成)
一実施形態では、パッケージはRPMに基づく。定義は、specファイルを介して提供され得る。既存のspecフォーマットと互換性がある場合がある。パッケージの作成は、新しいbuild-skinny-pkgツールを使用して実装され得る。Build-skinny-pkgツールの例を次に示す。
example.spec [1]
----------------------------------------
Name: example
Version: 0.1.1
BuildRequires: python
Requires: bash
%build
python -m compileall %{name}.py
%install
mkdir -p %{buildroot}/usr/lib/%{name}
install -m 0644 %{name}.py* %{buildroot}/usr/lib/%{name}/
%files
%dir /usr/lib/%{name}/
/usr/lib/%{name}/%{name}.py*
上記のスペックでは、spkgパッケージファイルを作成する。Build-skinny-pkgツールは、次の手順を実行する。
1. %{buildroot}をトラバース
2.各ファイルに、
A:ハッシュを計算
B:レポストア内に既に存在するかチェック
C:存在しない場合、レポストアへアップロード
D:spkgファイルのヘッダにメタデータエントリーを追加
3.spkgファイルをレポパッケージストアにアップロード
(パッケージファイルのレイアウトとコンバージョン)
パッケージファイルは、rpm形式に基づいている場合がある。それらは、ヘッダプリアンブル、ヘッダインデックス(ヘッダストア内の異なるエントリーを記述するタグ付き)、およびヘッダストアを含み得る。spkgパッケージにはペイロード(例えば、データ・アーカイブであり得る。)がなく、各ファイルのハッシュを格納する新しいヘッダタグ(HWTAG_FILELINKS)が含まれている場合がある。ディレクトリおよび非通常ファイルのファイルリンクは、「-1」に設定できる。
一実施形態では、rpmからspkgパッケージへの変換は、次の手順で構成される。
1.プリアンブルのコピー
2.インデックスをコピーし、新しいHWTAG_FILELINKSタグを追加
3.rpmファイルからコンテンツを抽出
4.ファイルリストと各ファイルの繰り返し処理
A:ハッシュを計算
B:レポストアにアップロード
C:ヘッダストアにハッシュを追加
(優先順位付けされたコンテンツ取得)
一実施形態では、フェッチャは、イメージ構築をブロックしないように並列にコンテンツを取得することができる。フェッチャは、優先順位の高い順にコンテンツを取得することができる。イメージの構築中に必要なパッケージファイルは、最初にフェッチすることができる。優先順位付けされた取得順序は、次の手順で決定できる。
1.バイナリ(RUNコマンド)の呼び出しのためにDockerfileをスキャン
2.Dockerfileでのバイナリの位置に従って検出されたバイナリを処理
3.検出された各バイナリに対し、現在のパッケージをスキャンして一致するものを探す
4.一致が検出された場合、優先順位の高いファイルのリストにバイナリを追加
5.優先順位の高いバイナリを順番に取得
パッケージは、パッケージ・メタデータの一部として優先取得順序を指定することもできる。
(リポジトリの切り替え)
一実施形態では、標準リポジトリからメタデータリポジトリへの移行は、2つの異なるオプションによって達成され得る。第1のオプションは、まったく新しいリポジトリとツールセットを提供する新しいツールセットであり、ツールセットを既存のリポジトリ・ツールセットと互換性を持たせる新しいツールセットである(例えば、yum)。以前のツールセットコマンドは、シームレスな移行のための新しいツールセットコマンドのエイリアスになり得る。
第2のオプションは、既存のツールを変更してメタデータ・パッケージの取得を可能にすることで、既存のツールセットを更新することである。メタデータ・ソフトウェア・パッケージを取得する必要があるかどうかを示すオプションが追加され得る。各リポジトリ定義には、従来のリポジトリ定義とメタデータ・パッケージのリポジトリ定義の2つのバージョンがある。メタデータ・パッケージ・オプションが設定されている場合は、メタデータ・パッケージ・レポが使用され得る。
一実施形態では、イメージ構築中にコンテナイメージ内にインストールするためのメタデータ・パッケージを格納および提供する方法が提供される。さらに、メタデータソフトウェア・パッケージをコンテナイメージ内にインストールする方法が提供される。さらに、既存のパッケージ作成ツールと互換性のあるメタデータソフトウェア・パッケージを作成する方法が提供される。さらに、メタデータソフトウェア・パッケージのためのファイルレイアウトが提供される。
また、既存のパッケージをメタデータソフトウェア・パッケージに変換する方法も提供される。さらに、メタデータソフトウェア・パッケージのコンテンツを優先的に取得する方法が提供される。
一実施形態では、コンテナルートファイルシステムの作成、操作、およびコンテナイメージレジストリとの相互作用のための方法が提供され、この方法は、すべてのファイルのパス、メタデータ、およびコンテンツハッシュを含むコンテナごとのイメージマニフェストを、レジストリのコンテンツアドレス指定可能なストア内にファイルのコンテンツを保持しながら維持することと、コンテナの起動中に、イメージ・マニフェストのみをイメージ・コンテンツなしでイメージレジストリからダウンロードすること、およびiノードに格納されたコンテンツハッシュを使用してファイルシステムをマウントすることと、ファイルデータアクセスにおいて、ファイルのコンテンツがローカルに存在するかどうかのチェックすることと、コンテンツが欠落している場合は、レジストリからキャッシュにそれをダウンロードすることと、ダウンロードしたファイルの内容を、ホスト上のすべてのコンテナルートファイルシステムのインスタンス間で共有される、ローカルのコンテンツアドレス指定可能なキャッシュ内に保持することと、イメージをレジストリにプッシュする時、マニフェストを生成すること、および欠落したコンテンツのみとともにイメージをレジストリにアップロードすることと、を含む。
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピュータ装置/処理装置へダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部記憶装置へダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピュータ装置/処理装置内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピュータ装置/処理装置におけるコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、一つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の各態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
上記のコンピュータ可読プログラム命令は、機械を生産するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供してよい。これにより、かかるコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における一つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。上記のコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他の装置またはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶してよい。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における一つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他の装置にロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他の装置上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他の装置上で実行される命令が、フローチャートもしくはブロック図またはその両方における一つ以上のブロックにて特定される機能/動作を実行する。
本開示の図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための一つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行してもよい。例えば、連続して示される2つのブロックは、実際には、関係する機能に応じて、一つの工程として達成してもよいし、同時もしくは略同時に実行してもよいし、部分的もしくは全体的に時間的に重複した態様で実行してもよいし、または場合により逆順で実行してもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能または動作を行う専用ハードウェアベースのシステムによって、または専用ハードウェアとコンピュータ命令との組み合わせによって実行可能である。
さらに、様々な実施形態によるシステムは、プロセッサと、プロセッサと統合された、もしくはプロセッサによって実行可能なロジックまたはその両方をを含むことができ、ロジックは、本明細書に記載されたプロセスステップの一つ以上を実行するように構成される。統合されるとは、プロセッサが、特定用途向け集積回路(ASIC)、FPGAなどのハードウェアロジックとして埋め込まれたロジックを有することを意味する。プロセッサによって実行可能であるとは、ロジックがハードウェアロジックもしくは、ファームウェア、オペレーティングシステムの一部、アプリケーションプログラムの一部などのソフトウェアロジックであること、または、ロジックが、プロセッサによってアクセス可能であり、プロセッサによって実行されたときに何らかの機能をプロセッサに実行させるように構成されたハードウェアおよびソフトウェアロジックのいくつかの組み合わせであることを意味する。ソフトウェアロジックは、当技術分野で公知の任意のメモリタイプのローカルもしくはリモートまたはその両方のメモリに格納され得る。当技術分野で公知の任意のプロセッサ、例えば、ソフトウェアプロセッサモジュールもしくはASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィックス処理装置(GPU)などのハードウェアプロセッサまたはその両方を使用することができる。
上述のシステムもしくは方法またはその両方の様々な特徴は、任意の方法で組み合わせることができ、上述の説明から複数の組み合わせを生成することが明らかである。
さらに、本発明の実施形態は、要求に応じてサービスを提供するために顧客のために展開されるサービスの形態で提供されてもよいことが理解されよう。
本開示の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。説明された実施形態の範囲および精神から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を説明するため、または当業者が本明細書に開示される実施形態を理解できるようにするために選択された。

Claims (25)

  1. コンテナを作成する要求を受信することと、
    前記コンテナのコンテナイメージのマニフェストを取得することと、
    前記マニフェストを利用して前記コンテナのファイルシステムをマウントすることと、
    を含む、コンピュータ実装方法。
  2. 前記コンテナイメージは、コンピューティングノードのクラスタのノードにおいて前記コンテナを作成するのに必要な複数のファイルを含み、
    前記コンテナイメージの前記マニフェストは、前記コンテナイメージ内の前記複数のファイルを記述するメタデータを含む
    請求項1に記載のコンピュータ実装方法。
  3. 前記マニフェストはリポジトリから取得される
    請求項1に記載のコンピュータ実装方法。
  4. 前記マニフェストは、前記コンテナのファイルシステムを作成するのに十分なデータを含む
    請求項1に記載のコンピュータ実装方法。
  5. 前記マニフェストは、一つまたは複数のiノード記述子およびファイルハッシュを含む
    請求項1に記載のコンピュータ実装方法。
  6. コンテナのためにマウントされた前記ファイルシステムによって、前記コンテナの前記コンテナイメージ内のデータへのアクセス要求を識別することと、
    前記コンテナイメージのマニフェストを利用して前記データの位置を決定することと、
    前記データの前記位置を利用して当該データを取得することと、をさらに含む、
    請求項1に記載のコンピュータ実装方法。
  7. 前記データへの前記アクセス要求は、ファイル読み出し要求を含む
    請求項6に記載のコンピュータ実装方法。
  8. 前記データの前記位置は、前記マニフェスト内に格納されたメタデータ内に含まれる
    請求項6に記載のコンピュータ実装方法。
  9. 前記マニフェストは、ファイルのコンテンツベース・アドレスを含む
    請求項6に記載のコンピュータ実装方法。
  10. 前記データがキャッシュにローカルに格納されていることを、前記コンテナイメージの前記マニフェストが示すことを決定することに応じて、当該キャッシュから当該データを取得すること、をさらに含む、
    請求項6に記載のコンピュータ実装方法。
  11. 前記データがキャッシュにローカルに格納されていないことを、前記コンテナイメージの前記マニフェストが示すことを決定することに応じて、通信ネットワークを介してコンテンツストアから当該データを取得すること、をさらに含む、
    請求項6に記載のコンピュータ実装方法。
  12. プログラム命令が実装されたコンピュータ可読記憶媒体を含む、コンテナイメージを展開するためのコンピュータプログラム製品であって、当該コンピュータ可読記憶媒体はそれ自体が非一時的信号であり、当該プログラム命令はプロセッサによって実行可能であり、当該プロセッサに、
    前記プロセッサによりコンテナを作成する要求を受信することと、
    前記プロセッサにより前記コンテナのコンテナイメージのマニフェストを取得することと、
    前記プロセッサにより前記マニフェストを利用して前記コンテナのファイルシステムをマウントすることと、
    を含む方法を実行させる、コンピュータプログラム製品。
  13. 前記コンテナイメージは、コンピューティングノードのクラスタのノードにおいて前記コンテナを作成するのに必要な複数のファイルを含み、
    前記コンテナイメージの前記マニフェストは、前記コンテナイメージ内の前記複数のファイルを記述するメタデータを含む
    請求項12に記載のコンピュータプログラム製品。
  14. 前記マニフェストはリポジトリから取得される
    請求項12に記載のコンピュータプログラム製品。
  15. 前記マニフェストは、前記コンテナのファイルシステムを作成するのに十分なデータを含む
    請求項12に記載のコンピュータプログラム製品。
  16. 前記マニフェストは、一つまたは複数のiノード記述子およびファイルハッシュを含む
    請求項12に記載のコンピュータプログラム製品。
  17. 前記プロセッサを利用したコンテナのためにマウントされた前記ファイルシステムによって、前記コンテナの前記コンテナイメージ内のデータへのアクセス要求を識別することと、
    前記プロセッサにより前記コンテナイメージのマニフェストを利用して前記データの位置を決定することと、
    前記プロセッサにより前記データの前記位置を利用して当該データを取得することと、をさらに含む、
    請求項12に記載のコンピュータプログラム製品。
  18. 前記データへの前記アクセス要求は、ファイル読み出し要求を含む
    請求項17に記載のコンピュータプログラム製品。
  19. 前記データの前記位置は、前記マニフェスト内に格納されたメタデータ内に含まれる
    請求項17に記載のコンピュータプログラム製品。
  20. プロセッサと、
    前記プロセッサと統合されているか、当該プロセッサによって実行可能であるか、または当該プロセッサと統合されていてかつ当該プロセッサによって実行可能であるロジックとを含み、当該ロジックは、
    コンテナを作成する要求を受信することと、
    前記コンテナのコンテナイメージのマニフェストを取得することと、
    前記マニフェストを利用して前記コンテナのファイルシステムをマウントすることと、
    を行うよう構成されている、システム
  21. 実行中のコンテナにソフトウェア・パッケージをインストールするコマンドを受信することと、
    前記ソフトウェア・パッケージのメタデータ・パッケージを取得することと、
    前記メタデータ・パッケージを利用して前記実行中のコンテナに前記ソフトウェア・パッケージをインストールすることと、
    前記ソフトウェア・パッケージのインストール中のファイルの必要性を識別することと、
    前記メタデータ・パッケージを利用して前記ファイルを取得することと、
    を含む、コンピュータ実装方法。
  22. 前記メタデータ・パッケージは公開リポジトリから取得される
    請求項21に記載のコンピュータ実装方法。
  23. 前記ソフトウェア・パッケージをインストールすることは、前記メタデータ・パッケージ内のメタデータをクラスタのノードにインストールすることを含む、
    請求項21に記載のコンピュータ実装方法。
  24. 前記メタデータは、データへのポインタを有する一つまたは複数のスタブファイルとして前記ノード内にインストールされる
    請求項23に記載のコンピュータ実装方法。
  25. プログラム命令が実装されたコンピュータ可読記憶媒体を含む、コンテナイメージを展開するためのコンピュータプログラム製品であって、当該コンピュータ可読記憶媒体はそれ自体が非一時的信号であり、当該プログラム命令はプロセッサによって実行可能であり、当該プロセッサに、
    前記プロセッサにより実行中のコンテナにソフトウェア・パッケージをインストールするコマンドを受信することと、
    前記プロセッサにより前記ソフトウェア・パッケージのメタデータ・パッケージを取得することと、
    前記プロセッサにより前記メタデータ・パッケージを利用して前記実行中のコンテナに前記ソフトウェア・パッケージをインストールすることと、
    前記プロセッサにより前記ソフトウェア・パッケージのインストール中のファイルの必要性を識別することと、
    前記プロセッサにより前記メタデータ・パッケージを利用して前記ファイルを取得することと、
    を含む方法を実行させる、コンピュータプログラム製品。
JP2021181945A 2020-11-09 2021-11-08 コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開) Pending JP2022076475A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/093,355 2020-11-09
US17/093,355 US12056511B2 (en) 2020-11-09 2020-11-09 Container image creation and deployment using a manifest

Publications (1)

Publication Number Publication Date
JP2022076475A true JP2022076475A (ja) 2022-05-19

Family

ID=78718534

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021181945A Pending JP2022076475A (ja) 2020-11-09 2021-11-08 コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開)

Country Status (5)

Country Link
US (1) US12056511B2 (ja)
JP (1) JP2022076475A (ja)
CN (1) CN114461333A (ja)
DE (1) DE102021125179A1 (ja)
GB (1) GB2604967B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024047779A1 (ja) * 2022-08-31 2024-03-07 楽天モバイル株式会社 仮想環境のための大容量ファイルのダウンロードの効率化

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11288053B2 (en) * 2019-08-15 2022-03-29 Microstrategy Incorporated Conversion and restoration of computer environments to container-based implementations
US11829742B2 (en) 2019-08-15 2023-11-28 Microstrategy Incorporated Container-based server environments
US11836158B2 (en) 2020-02-03 2023-12-05 Microstrategy Incorporated Deployment of container-based computer environments
US11995350B2 (en) * 2020-12-23 2024-05-28 Red Hat, Inc. Prefetching container data in a data storage system
US20220292058A1 (en) * 2021-03-09 2022-09-15 Komprise, Inc. System and methods for accelerated creation of files in a filesystem
US12093673B2 (en) * 2022-09-23 2024-09-17 Red Hat, Inc. Smart image registries for dynamic image generation
CN116302210B (zh) * 2023-05-17 2023-08-04 阿里云计算有限公司 一种镜像文件的导入方法、装置、电子设备及存储介质

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783967B1 (en) * 2005-10-28 2010-08-24 Aol Inc. Packaging web content for reuse
US8887056B2 (en) 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
EP3251028A1 (en) * 2015-01-29 2017-12-06 Longsand Limited Regenerated container file storing
US9823915B1 (en) * 2015-08-06 2017-11-21 Mesosphere, Inc. Software container format
US9940470B2 (en) * 2015-10-06 2018-04-10 Symantec Corporation Techniques for generating a virtual private container
JP2017076264A (ja) 2015-10-15 2017-04-20 日本電気株式会社 ファイルアクセスシステム、方法及びプログラム
US20170153930A1 (en) * 2015-11-30 2017-06-01 Coreos, Inc. Application container runtime
US10261782B2 (en) * 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US11388037B2 (en) * 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
US9766915B1 (en) 2016-03-23 2017-09-19 Parallels IP Holdings GmbH Method for creation of application containers inside OS containers
US10291706B1 (en) 2016-03-24 2019-05-14 EMC IP Holding Company LLC Container image distribution acceleration
US10469574B1 (en) 2016-04-20 2019-11-05 EMC IP Holding Company LLC Incremental container state persistency and replication for containerized stateful applications
US9825982B1 (en) * 2016-04-29 2017-11-21 Ciena Corporation System and method for monitoring network vulnerabilities
US10656865B1 (en) * 2016-12-13 2020-05-19 Amazon Technologies, Inc. Virtualized block device backing for virtualization containers
US10356214B2 (en) * 2017-03-29 2019-07-16 Ca, Inc. Composing monolithic applications based on multi-container applications
US10387750B2 (en) * 2017-08-08 2019-08-20 Red Hat, Inc. Supporting manifest list for multi-platform application container images
US10922090B1 (en) * 2017-10-06 2021-02-16 EMC IP Holding Company LLC Methods and systems for executing a software application using a container
US10324708B2 (en) 2017-11-14 2019-06-18 Red Hat, Inc. Managing updates to container images
US10841152B1 (en) * 2017-12-18 2020-11-17 Pivotal Software, Inc. On-demand cluster creation and management
US10649802B2 (en) * 2018-03-21 2020-05-12 Red Hat, Inc. Component based dynamic guest instantiation
US11017092B2 (en) * 2018-09-27 2021-05-25 Intel Corporation Technologies for fast launch of trusted containers
US20220121466A1 (en) * 2018-11-30 2022-04-21 OAKnode, Inc. System and method for facilitating participation in a blockchain environment
US11232192B2 (en) * 2019-01-03 2022-01-25 NeuVector, Inc. Automatic deployment of application security policy using application manifest and dynamic process analysis in a containerization environment
US10868855B2 (en) * 2019-04-01 2020-12-15 Citrix Systems, Inc. File containerization and management
US11966769B2 (en) * 2019-05-23 2024-04-23 Microsoft Technology Licensing, Llc Container instantiation with union file system layer mounts
US11537523B2 (en) * 2019-07-31 2022-12-27 Red Hat, Inc. Command result caching for building application container images
US11768670B2 (en) * 2019-11-08 2023-09-26 Halliburton Energy Services, Inc. Generating customized wellbore software application installer for deployment in a wellbore computing network
US10873592B1 (en) * 2019-12-23 2020-12-22 Lacework Inc. Kubernetes launch graph
US20230025529A1 (en) * 2020-01-17 2023-01-26 Spectro Cloud, Inc. Apparatus and method for managing a distributed system with container image manifest content
US11372635B2 (en) * 2020-05-29 2022-06-28 Salesforce.Com, Inc. In-memory software package installation and testing
US11573816B1 (en) * 2020-06-26 2023-02-07 Amazon Technologies, Inc. Prefetching and managing container images using cluster manifest
US11461240B2 (en) * 2020-10-01 2022-10-04 Hewlett Packard Enterprise Development Lp Metadata cache for storing manifest portion

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024047779A1 (ja) * 2022-08-31 2024-03-07 楽天モバイル株式会社 仮想環境のための大容量ファイルのダウンロードの効率化

Also Published As

Publication number Publication date
US20220147378A1 (en) 2022-05-12
GB2604967A (en) 2022-09-21
GB2604967B (en) 2024-02-28
DE102021125179A1 (de) 2022-05-12
GB202115004D0 (en) 2021-12-01
US12056511B2 (en) 2024-08-06
CN114461333A (zh) 2022-05-10

Similar Documents

Publication Publication Date Title
JP2022076475A (ja) コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開)
US10521447B2 (en) Container application execution using image metadata
US8812627B2 (en) System and method for installation and management of cloud-independent multi-tenant applications
US9727578B2 (en) Coordinated access to a file system's shared storage using dynamic creation of file access layout
US8806489B2 (en) Virtual machine image distribution network
US10824453B2 (en) Hypervisor-based just-in-time compilation
US10831722B2 (en) Disk image introspection for storage systems
EP2791787B1 (en) Autonomous network streaming
US11003658B2 (en) Selectively retrieving data from remote share nothing computer clusters
JP2022076457A (ja) コンテンツ・アウェア・ノード選択方法、プログラム、およびシステム
US10681180B2 (en) Dynamically transitioning the file system role of compute nodes for provisioning a storlet
US11029932B2 (en) Hydration of applications
US10747458B2 (en) Methods and systems for improving efficiency in cloud-as-backup tier
US11418555B1 (en) Systems and methods for streaming an application via object storage
US20240184745A1 (en) File-level snapshot access service
US9298487B2 (en) Managing virtual machine images in a distributed computing environment
CN115336237A (zh) 远程存储的文件的预测性供应
US11526286B1 (en) Adaptive snapshot chunk sizing for snapshots of block storage volumes
US11669318B2 (en) Rapid software provisioning and patching
US11803303B1 (en) Intelligent layer control of redundant content in container images
US10592415B2 (en) Modified consistency hashing rings for object store controlled WAN cache infrastructure
Fonville The virtual machine delivery network

Legal Events

Date Code Title Description
RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20211223

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240411