JP6826586B2 - 従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム - Google Patents

従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム Download PDF

Info

Publication number
JP6826586B2
JP6826586B2 JP2018504148A JP2018504148A JP6826586B2 JP 6826586 B2 JP6826586 B2 JP 6826586B2 JP 2018504148 A JP2018504148 A JP 2018504148A JP 2018504148 A JP2018504148 A JP 2018504148A JP 6826586 B2 JP6826586 B2 JP 6826586B2
Authority
JP
Japan
Prior art keywords
container
target
host
information
candidate
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
JP2018504148A
Other languages
English (en)
Other versions
JP2018530033A (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 JP2018530033A publication Critical patent/JP2018530033A/ja
Application granted granted Critical
Publication of JP6826586B2 publication Critical patent/JP6826586B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、一般に、仮想機械に関し、より詳細には、コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラムに関する。
仮想機械(VM)は、仮想化を創出するために広く使用されている。VMは、コンピュータアーキテクチャ、及び、現実の又は仮想のコンピュータの機能に基づいて動作する。VMは、物理機械の様にプログラムを実行する機械のソフトウェア実装である。単一の物理機械は、その上で実行される多数のVMをサポートすることができ、これらVMを「ハイパバイザ」と呼ばれるプログラムを使用して管理することができる。伝統的なVMアーキテクチャは、各VMにゲストオペレーティングシステム(OS)をデプロイしなければならないので、リソースの浪費を生じさせる。
コンテナは、プロセス及び/又はリソースを隔離することを可能にする軽量な仮想化を、完全仮想化の命令翻訳機構及び/又はその他の複雑さをもたらすことを必要とせずに提供する。Linux Container(LXC)などのコンテナ技術は、プロセス及びリソースを隔離することを可能にする軽量な仮想化を、完全仮想化の命令翻訳機構及びその他の複雑さをもたらすことを必要とせずに提供する。コンテナは、単一のホストオペレーティングシステム(OS)によって管理されるリソースを効果的に分割して隔離されたグループとし、これら隔離されたグループ間でリソース使用率に対する競合する要求をうまく均衡させる。すなわち、コンテナ技術は、共通OS及び場合によってはいくつかの適切なバイナリファイル又はライブラリの共有を可能にする。
Dockerは、オープンソースプロジェクトであり、これはLinux上でオペレーティングシステムレベル仮想化の抽象化及び自動化の追加レイヤを提供することによって、ソフトウェアコンテナの内部でのアプリケーションのデプロイメントを自動化する。(注:「Docker」及び「Linux」という用語は、世界中の様々な管轄権において商標権の対象である場合があり、本明細書においては、このような商標権が存在し得る範囲で標章によって適正に称される製品又はサービスに対して言及する場合にのみ使用される。)Dockerは、cgroup及びカーネル名前空間などのLinuxカーネルのリソース隔離特徴を使用して、独立した「コンテナ」が単一のLinuxインスタンス内で動作することを可能にし、仮想機械の起動及び維持のオーバヘッドを回避する。
本発明の目的は、コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラムを提供することである。
一般に、本発明の例示的な実施形態は、コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラムを含む。
一態様において、コンピュータ実装方法が提供される。上記方法によれば、第1の情報及び第2の情報が得られる。第1の情報は、デプロイされるターゲットコンテナによって必要とされるターゲットライブラリを示し、第2の情報は、複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリを示す。次いで、ターゲットコンテナを複数の候補ホスト上にデプロイするコストが、第1の情報及び第2の情報に基づいて判定される。ターゲットホストは、判定されたコストに基づいて複数の候補ホストの中から選択され、選択されたターゲットホスト上にターゲットコンテナがデプロイされるようになっている。
別の態様において、デバイスが提供される。デバイスは、処理ユニットと、処理ユニットに結合された、命令を格納するメモリとを含む。上記命令は、処理ユニットによって実行されたときに、以下の動作、すなわち、デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得ることと、複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得ることと、第1の情報及び前記第2の情報に基づいて、ターゲットコンテナを複数の候補ホスト上にデプロイするコストを判定することと、ターゲットコンテナをデプロイするための判定されたコストに基づいて、複数の候補ホストの中からターゲットホストを選択することと、を行う。
さらに別の態様において、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、非一時的な機械可読媒体上に有形に格納され、機械実行可能命令を含む。上記命令は、デバイス上で実行されたときに、該デバイスに、デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得させ、複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得させ、第1の情報及び第2の情報に基づいて、ターゲットコンテナを複数の候補ホスト上にデプロイするコストを判定させ、ターゲットコンテナをデプロイするための判定されたコストに基づいて、複数の候補ホストの中からターゲットホストを選択させる。
本概要は、本発明の実施形態の重要な又は必須の特徴を識別することを意図したものでもなく、本発明の範囲を限定することを意図したものでもないことを理解されたい。本発明の他の特徴は、以下の説明を通じて容易に理解できるであろう。
添付図面中の本開示のいくつかの実施形態のより詳細な説明を通じて、本開示の上記及び他の目的、特徴及び利点は、より明らかになるであろう。
図面全体を通じて、同じ又は類似の符号は、同じ又は類似の要素を表す。
本発明の実施形態を実装することができる電子デバイスのブロック図である。 本発明の実施形態によるコンテナ・デプロイメントに基づくテンプレートの模式図である。 本発明の実施形態を実装することができる環境のブロック図である。 本発明の実施形態によるコンテナ・デプロイメントのための方法のフローチャートである。 本発明の実施形態によるdockerfileの一例のスクリーンショット、およびターゲットコンテナをデプロイするコストを判定するフローチャートである。 本発明によるコンテナ・デプロイメントのためのシステムのブロック図である。 本発明によるコンテナ/イメージ情報として機能するファイルのスクリーンショットである。
本発明の原理を、ここでいくつかの実施形態を参照して説明する。これらの実施形態は、単に例示の目的で説明され、当業者が本発明を理解すること及び実施することを補助するものであり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。本明細書で説明する発明は、以下で説明する以外の種々のやり方で実施することができる。
本明細書で使用する場合、「含む」という用語は、「含むが、それらに限定されない」を意味する、オープンな用語として解釈すべきである。「基づく」という用語は、「少なくとも部分的に基づく」と解釈すべきである。「1つの実施形態」及び「実施形態」という用語は、「少なくとも1つの実施形態」と解釈すべきである。「別の実施形態」という用語は、「少なくとも1つの他の実施形態」と解釈すべきである。他の定義は、明示的及び暗黙的に、下記に含まれ得る。
最初に、本発明の実施形態を実施するのに適用可能な例示的な電子デバイス又はコンピュータシステム/サーバ12が示された図1を参照する。コンピュータシステム/サーバ12は、単なる例示であり、本明細書で説明する本発明の実施形態の使用又は機能の範囲に関していかなる限定を示唆することも意図しない。
図1に示すように、コンピュータシステム/サーバ12は、汎用コンピュータデバイスの形態で示される。コンピュータシステム/サーバ12のコンポーネントは、1つ又は複数のプロセッサ又は処理ユニット16と、システムメモリ28と、システムメモリ28を含む種々のシステムコンポーネントをプロセッサ16に結合するバス18とを含むことができるが、これらに限定されない。
バス18は、任意の多様なバスアーキテクチャを使用した、メモリバス又はメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、及びプロセッサ又はローカルバスを含む、いくつかのタイプのバス構造のいずれかのうちの1つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、インダストリー・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、及びペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
コンピュータシステム/サーバ12は、典型的には、多様なコンピュータシステム可読媒体を含む。このような媒体は、コンピュータシステム/サーバ12によってアクセス可能な任意の使用可能な媒体とすることができ、これは揮発性及び不揮発性媒体、取外し可能及び取外し不能媒体の両方を含む。
このようなメモリ28は、ランダムアクセスメモリ(RAM)30及び/又はキャッシュメモリ32などの、揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ12は、他の取外し可能/取外し不能、揮発性/不揮発性コンピュータシステムストレージ媒体をさらに含むことができる。単なる例示として、取外し不能な不揮発性磁気媒体(図示せず、典型的には「ハードドライブ」と称される)の読出し及び書込みのためにストレージシステム34を設けることができる。図示されていないが、取出し可能な不揮発性磁気ディスク(例えば「フロッピーディスク」)の読出し及び書込みのための磁気ディスクドライブ、及び、CD−ROM、DVD−ROM又は他の光学媒体などの取出し可能な不揮発性光ディスクの読出し又は書込みのための光ディスクドライブを設けることができる。このような事例において、各々は、1つ又は複数の媒体インタフェースによってバス18に接続することができる。さらに下記で示され説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば少なくとも1つ)を有する、少なくとも1つのプログラム製品を含むことができる。
プログラムモジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、メモリ28内に、オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に、格納されることができる。オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータ又はそれらのいくつかの組合せの各々は、ネットワーク環境の実装を含むことができる。プログラムモジュール42は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法論を実行する。
コンピュータシステム/サーバ12は、キーボード、ポインティングデバイス、ディスプレイ24などのような1つ又は複数の外部デバイス14と通信することもできる。ユーザがコンピュータシステム/サーバ12と相互作用することを可能にする1つ又は複数のデバイス、及び/又は、コンピュータシステム/サーバ12が1つ又は複数の他のコンピューティングデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等)。このような通信は、入力/出力(I/O)インタフェース22を介して行うことができる。さらにまた、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して、ローカルエリアネットワーク(LAN)、汎用広域ネットワーク(WAN)及び/又は公衆ネットワーク(例えばインターネット)などの、1つ又は複数のネットワークと通信することができる。図示したように、ネットワークアダプタ20は、バス18を介して、コンピュータシステム/サーバ12の他のコンポーネントと通信する。図示していないが、他のハードウェア及び/又はソフトウェアコンポーネントをコンピュータシステム/サーバ12と共に使用することができることを理解されたい。例として、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブ・ストレージシステムなどが挙げられるがそれらに限定されない。
コンピュータシステム/サーバ12において、I/Oインタフェース22は、コンピュータシステム/サーバ12へ入力を提供するために使用することができる種々の異なる入力デバイスの1つ又は複数をサポートし得る。例えば、入力デバイスは、キーボード、キーパッド、タッチパッド、トラックボールなどのユーザデバイスを含み得る。入力デバイスは、音声認識、タッチ及びスタイラス認識、入力デバイスに接触した及び入力デバイス近傍のジェスチャの認識、エアジェスチャの認識、頭部及び視線の追跡、音声(voice)及び音声(speech)認識、ユーザの脳の活動の検知、及び人工知能などの、1つ又は複数のナチュラル・ユーザインタフェース技術を実装することができる。
従属性に基づくコンテナ・デプロイメントのいくつかの例示的な実施形態を以下の段落において説明する。本発明の実施形態によれば、新たなコンテナをデプロイするとき、その新たなコンテナによって必要とされるライブラリと候補ホストにロード済みのライブラリとの従属性を考慮に入れる。一般的に言って、新たなコンテナは、必要とされるライブラリをできるだけ多く既にロード済みのホストにデプロイされる。追加のライブラリによって生じる計算のオーバヘッドを低減又は排除することによって、デプロイメントコストを最小化することができる。いくつかの実施形態において、ターゲットホストは、ライブラリの特性、ホストの作業負荷、1つ又は複数のデプロイされるその他のコンテナなどのような他の関連要因にさらに基づいて選択することが可能である。
以下の説明において、本発明の原理を、テンプレートに基づいてコンテナがデプロイされる実施形態を参照して説明する。しかしながら、テンプレートに基づくコンテナ・デプロイメントは単なる例示的な機構であり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。代替的な実施形態において、コンテナは、任意の他の適切な機構によってデプロイすることができる。
図2は、テンプレートに基づくコンテナ・デプロイメントの模式図を示す。1つ又は複数のテンプレート205を前もって作成することができる。テンプレートは、コンテナをデプロイ及び構築するのに使用することができる情報を収容することができる。例えば、テンプレートは、ウェブアプリケーションがインストールされたオペレーティングシステムを収容することができる。特定のパラメータ値及び/又はネットワーク構成などの構成は、テンプレートがホスト上にデプロイされたときにインスタンス化される。例として、Dockerコンテナの場合、テンプレート205は、「イメージ」と呼ばれる。(注:「Docker」という用語は、世界中の様々な管轄権において商標権の対象である場合があり、本明細書においては、このような商標権が存在し得る範囲で標章によって適正に称される製品又はサービスに対して言及する場合にのみ使用される。)テンプレート205は、レジストリ210内にアップロードされ、格納されることができる。本明細書を全体を通してDocker及びDocker固有の要素について言及しているが、本発明の態様は、コンテナ・デプロイメントが実施される他の自動化プログラムに対しても等しく適用できることを理解されたい。
テンプレート205は、ホスト215にプロビジョニングされて、ホスト215上で実行されるホストOS220上でインスタンス化され得る。コンテナエンジン225は、コンテナを管理及び制御するために、ホストOS220上で実行される。ホスト215は、1つ又は複数のコンテナ230及び240を含むことができ、その各々は、1つ又は複数のテンプレートに基づいて構築される。Dockerコンテナのようなある種のコンテナの場合、テンプレートは、読出し専用イメージである。テンプレート205のインスタンス化は、テンプレートの最上部に書込み可能レイヤを作成することによって行われる。例えば、図2に示すように、書込み可能レイヤ232及び242は、それぞれコンテナ230及び240を構築するために作成される。
テンプレートは、「ペアレントテンプレート」と称することができる1つ又は複数のテンプレートを参照することができる。ペアレントテンプレートを有さない下層のテンプレートは、「ベーステンプレート」と称される。図2に示す例において、コンテナ230は、テンプレート231...231を伴い、コンテナ240は、テンプレート241...241を伴う。このようにして、コンテナは、書込み可能レイヤ、ペアレントテンプレート(存在する場合)に関する情報を伴うその対応するテンプレート、及び一意識別子、ネットワーク構成、リソース割当などのような追加情報によって定義することができる。
一般的に言って、テンプレートをデプロイする際に、1つ又は複数のライブラリがホスト215上にロードされることが必要である。Dockerコンテナにおいて、ライブラリはレイヤに配置されることができ、それゆえテンプレートに対する各ライブラリをレイヤとみなすことができる。例えば、図2に示すように、テンプレート231は、ライブラリ/レイヤ235...235を収容する。異なるコンテナ/テンプレートが1つ又は複数の共通のライブラリを共有することができる。このようにして、ライブラリ/レイヤは、異なるコンテナ/テンプレートの従属性を定めることができる。本発明の実施形態によれば、このような従属性を用いて、新たなコンテナの効率的なデプロイメントが達成される。
図3は、本発明の実施形態を実装することができる環境300のブロック図を示す。図示したように、環境300の中に、複数の候補ホスト215、...、215(集合的に「ホスト215」と称される)が存在する。候補ホスト215の各々は、既にその上にデプロイされた少なくとも1つのコンテナを含む。コンテナマネージャ310は、コンテナのデプロイメントを制御する。いくつかの実施形態において、コンテナマネージャ310は、例えば、図1を参照して上述したようなコンピュータシステム/サーバ12によって実装することができる。
コンテナ(「ターゲットコンテナ」と称される)が構築される場合、コンテナマネージャ310は、候補ホスト215の中から適切なホストを選択する。この目的のために、コンテナマネージャ310は、ターゲットコンテナによって必要とされるライブラリ(「ターゲットライブラリ」と称される)を判定する。いくつかの実施形態において、これは、ターゲットコンテナについてのプロビジョン要件320を解析することによって行うことができる。例えば、テンプレートに基づくコンテナ・デプロイメントが使用される実施形態において、コンテナマネージャ310は、最初にターゲットコンテナをデプロイするためのテンプレートを判定し、次いでそのテンプレートのためのライブラリを判定することができる。コンテナマネージャ310は、候補ホスト215上にデプロイされたコンテナの構成情報をさらに収集する。構成情報は、候補ホスト215の各々の上にロード済みのライブラリを少なくとも示す。
収集された情報に基づいて、コンテナマネージャ310は、ターゲットコンテナを候補ホスト215の各々の上にデプロイするコストを、ターゲットコンテナと既存のライブラリとの間の従属性に少なくとも部分的に基づいて判定する。コンテナマネージャ310は、次いで、デプロイメントコストが最小化されるように、ターゲットコンテナをデプロイするのに適切なホストを選択する。理想的には、ターゲットコンテナによって必要とされるすべてのターゲットライブラリを既にロード済みのホスト215があれば、デプロイメントは非常に効率的になるはずである。
図4は、本発明の実施形態によるコンテナ・デプロイメントのための方法400のフローチャートを示す。方法400は、図3に示すようなコンテナマネージャ310によって実装することができる。例えば、コンテナマネージャ310がコンピュータシステム/サーバ12によって実装される実施形態において、方法400を実行するように処理ユニット16を構成することができる。
図4に示すように、方法400は、ステップ410において始められ、ここでターゲットコンテナによって必要とされるターゲットライブラリを示す情報が得られる。考察の便宜上、ステップ410で得られる情報を「第1の情報」と称する。第1の情報は、多くの異なる方式で得ることができる。例えば、1つの実施形態において、第1の情報は、ターゲットコンテナについてのプロビジョン要件及び/又は任意の他の構成ファイルから誘導することができる。
一例としてDocker技術を考えると、「dockerfile」と呼ばれるファイルは、コンテナをどのように構築するか、及びコンテナが動作しているときに何を実行するかを記述することができる。(注:「dockerfile」という用語は、世界中の様々な管轄権において商標権の対象である場合があり、本明細書においては、このような商標権が存在し得る範囲で標章によって適正に称される製品又はサービスに対して言及する場合にのみ使用される。)図5は、例示的なdockerfile500のスクリーンショットを示す。公知のように、dockerfileは可読であり、アプリケーションソースコードと共に維持可能である。したがって、ターゲットコンテナについてのdockerfileを解析することによって、ロードされることが必要なターゲットライブラリを判定することが可能である。dockerfileは、単なる例であり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。ターゲットライブラリは、ターゲットコンテナに関連する他のいずれかのファイル又はメタデータを解析することによって判定することができる。他の実施形態において、プロビジョン要件の解析に加えて又はその代わりに、ターゲットライブラリは、ユーザによって明示的に指定されるか又は他の任意の方法で得ることができる。
さらに図4に示すように、方法400は、ステップ420に進み、ここで複数の候補ホスト215上の1つ又は複数のコンテナに対してロード済みのライブラリを示す情報が得られる。考察の便宜上、ステップ420において得られる情報を「第2の情報」と称する。いくつかの実施形態において、第2の情報は、候補ホスト215の各々から収集することができる。例えば、Dockerシステムにおいて、ひとたびコンテナ及び/又はその構成が変化すると、ホスト215は、メッセージを生成して、「イベントバス」と呼ばれるコンポーネントに送信することができる。メッセージは、ホスト、ホストOS、デプロイ済のコンテナなどの、ハードウェア及び/又はソフトウェア構成に関する情報を含む。コンテナマネージャ310は、このようなメッセージを取得して解析し、候補ホスト215の各々の上に既にロード済みのライブラリを判定することができる。この点に関する例示的な実施形態を以下の段落で論じる。
いくつかの実施形態において、第2の情報は、コンテナを候補ホスト215上にデプロイするために使用されるテンプレートの構築履歴を解析することによって得ることができる。引き続きDockerコンテナを例として考えると、候補ホスト215上にコンテナを構築するために使用されるdockerfileは、上述のようにアクセス可能である。これらのdockerfileは、それゆえ候補ホスト215上のコンテナの構築履歴のレコードを維持する。コンテナマネージャ310は、候補ホスト215上に既にロード済みのライブラリを判定するために、これらのdockerfileを取得して解析することができる。
候補ホスト215から第2の情報を収集することに加えて又はその代わりに、いくつかの実施形態において、コンテナマネージャ310は、ロードされたライブラリに関する情報をローカルに格納することができる。例えば、ライブラリが候補ホスト215上にロードされるたびに、コンテナマネージャ310は、レコードを更新することができる。そのような実施形態では、ステップ420において、コンテナマネージャ310は、そのローカルレコードにアクセスして、候補ホスト215の各々の上にロード済みのライブラリを判定することができる。他の適切な手法も可能である。
ステップ410はステップ420の前に示されているが、これは単に例証を目的とするものであり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。第1の情報は、必ずしも第2の情報の前に収集しなければならないわけではない。他の実施形態において、第1及び第2の情報は、逆順に又は並行して得ることができる。
次に、ステップ430において、ターゲットコンテナを複数の候補ホスト215上にデプロイするコストが、第1の情報及び第2の情報に基づいて判定される。一般に、ターゲットコンテナを任意の所与の候補ホスト215上にデプロイするコストは、ロードすべきターゲットライブラリと、候補ターゲット機械上にロード済みのライブラリとの間の一致度に少なくとも部分的に基づいて判定される。随意に、1つ又は複数のその他の要因を考慮に入れることができる。図5は、本発明の例示的な実施形態による、所与の候補ホスト215上にターゲットコンテナをデプロイするコストを判定する方法505のフローチャートを示す。方法505は、候補ホスト215の全部又は少なくとも一部に適用することができる。
方法505は、ステップ510において始められ、ターゲットライブラリと所与の候補ホスト215上のライブラリとの間の一致度が、第1の情報及び第2の情報に基づいて判定される。本発明の実施形態によれば、あるライブラリと別のライブラリとが互いに機能的に等しい場合、これら2つのライブラリは一致する。すなわち、既存のライブラリをターゲットライブラリとして機能するように再使用することができるのであれば、そのターゲットライブラリは、所与の候補ホスト215上に一致するライブラリを有すると思われる。例えば、ターゲットライブラリが所与の候補ホスト215上に既にロード済みであると判定されたのであれば、一致が見いだされたことになる。別の例として、候補ホスト上の1つ又は複数の既存のライブラリがターゲットライブラリと機能的に等しいか又は類似であれば、同様に一致が見いだされたことになる。ステップ510において、所与の候補ホスト215上に一致するライブラリを有するターゲットライブラリの数を判定することが可能である。
いくつかの実施形態において、ステップ520において、各ターゲットライブラリを所与の候補ホストにロードするコストが判定される。異なるライブラリをロードするコストは通常異なることが認識されるであろう。例えば、ある種のライブラリは、ロードするプロセスにおいてより多くのリソース(計算リソース、ストレージリソースなど)を消費する。別の例において、異なるライブラリは、通常異なるサイズを有し、したがって異なるネットワーク帯域幅リソースを消費する。ターゲットライブラリをロードするコストは、そのサイズ、CPU(中央処理ユニット)消費、ストレージ消費及び/又は他の関連要因に基づいて判定することができる。方法400におけるステップ410及び420と同様に、ステップ510及び520の順序は交換することができる。
方法505は次にステップ530に進む。このステップにおいて、ターゲットコンテナを所与の候補ホスト215上にデプロイするコストが判定される。いくつかの実施形態では、ステップ530において、コストは、ステップ510において判定される一致度、及びステップ520において判定されるターゲットライブラリをロードするコストに基づいて判定される。ターゲットコンテナが、ロードすべきN個のターゲットライブラリL、L...Lを伴うと想定し、ここでNは自然数を表すものとする。1つの実施形態において、ターゲットコンテナを候補ホスト215上にデプロイするコストは、下記のように判定され、
C=M*C+M*C...+M*C
ここで、ターゲットライブラリLが所与の候補ホスト215上に一致するライブラリを有する場合、M=0であり、そうでない場合、M=1であり(i=1...N)、Cは、ライブラリLを所与の候補ホスト215にロードするコストを表す。
あるいは、他の実施形態において、ターゲットコンテナをデプロイするコストは、ステップ530において、個々のライブラリをロードするコストを考慮せずに判定することができる。例えば、場合によっては、異なるライブラリをロードするコストはほぼ同じであると仮定することが合理的である。この点において、ステップ520を省略することができる。従って、ステップ530において、ターゲットコンテナを所与の候補ホスト215上にデプロイするコストは、以下のように計算することができる。
C=M+M...+M
引き続き図4を参照すると、いくつかの実施形態において、方法400はステップ440に進み、ここで複数の候補ホスト215の作業負荷を示す情報が得られる。考察の便宜上、ステップ440において得られる情報を「第3の情報」と称する。例として、候補ホスト215の各々について、第3の情報は、プロセッサ使用率、メモリ使用率、ディスク使用率、ネットワーク帯域幅使用率などのうちの1つ又は複数を示すことができる。第3の情報に含まれるメトリックをそれぞれの閾値と比較することによって、各候補ホスト215が重い負担を負っているか否かを判定することができる。
次に、ステップ450において、複数の候補ホスト215の中からターゲットホストが選択される。本発明の実施形態によれば、ターゲットホストは、ステップ430において判定されたコストに少なくとも部分的に基づいて選択される。一般に、ターゲットホストは、ターゲットコンテナをデプロイするコストが十分に低くなる(閾値を下回る)ように選択される。詳細には、いくつかの実施形態において、ターゲットコンテナをデプロイするコストを最小化することができる候補ホスト215が、ステップ450においてターゲットホストとして選択される。このようにして、コンテナ/テンプレートの間の従属性の使用によって、ターゲットコンテナを効率的にデプロイすることができる。実験は、コンテナ・デプロイメントによって消費される時間を著しく低減することができることを示す。例えば、従来の手法では5〜10分かかるスクラッチからイメージを構築する作業に対して、本発明の実施形態は、約5秒しか要しない。
いくつかの実施形態において、ステップ450においてターゲットホストを選択することは、ステップ440において判定された候補ホスト215の作業負荷に、さらに基づくことができる。例えば、いくつかの実施形態において、その作業負荷が所定の閾値を超える候補ホスト215は、最初に除外される。すなわち、ターゲットホストは、比較的低い作業負荷を有する残りの候補ホストの中から選択される。あるいは、いくつかの実施形態において、ステップ430において判定されたコスト及びステップ440において判定された作業負荷を組み合わせて、ステップ450においてターゲットホストを選択するためのメトリックとして機能させることができる。単なる例として、コストと作業負荷とを乗算して、メトリックとして機能させることができる。その他の任意の適切な方法も可能である。
候補ホストの作業負荷を考慮に入れることによって、現時点で過負荷のホスト上にターゲットコンテナをデプロイすることを回避することが可能である。すなわち、ホストのデプロイメントコストと作業負荷との間にはトレードオフが存在する。しかしながら、作業負荷は必ずしも考慮に入れる必要がないことを理解されたい。いくつかの実施形態において、ターゲットホストは、上述のように、判定されたコストのみに基づいて選択することができる。さらに、作業負荷に加えて又はその代わりに、ステップ450において候補ホスト215の他の特性を考慮することができる。特性の例は、性能、セキュリティ、ネットワークドメイン、製造者などを含むがこれらに限定されない。
さらに、ときには複数のコンテナをバッチでデプロイすべき場合があることが認識されるであろう。例えば、あるアプリケーションを構築するために、互いに協働する複数のコンテナをデプロイする必要があり得る。この点で、ステップ450において、ターゲットホストは、コンテナを個別に考慮する代わりに、複数のターゲットコンテナの総コストに基づいて選択することができる。例えば、第1のコンテナ及び第2のコンテナがデプロイされるものとする。いくつかの実施形態において、ターゲットホストを別々に選択する代わりに、ターゲットホストは、ステップ450において、第1及び第2のコンテナをデプロイする総コストが所定の閾値を下回るか又は最小化されるように選択することができる。このようにして、全システムの性能を改善することができる。
ターゲットコンテナは、ステップ450において選択されたターゲットホスト上にデプロイすることができる。現在公知であるか又は将来開発されるかいずれかの任意の適切な技術を適用して、ターゲットコンテナのデプロイメントを完成させることができる。例えば、選択されたターゲットホストに関する情報及び他のいずれかの関連情報をプロビジョンメタデータとして編成することができる。プロビジョンメタデータは、プロビジョンコマンダに提供されることができ、これが次にコンテナデプロイヤを制御して、選択されたターゲットホストに必要とされるテンプレートを分配する。ターゲットホスト上でテンプレートをインスタンス化することによって、ターゲットコンテナがデプロイされる。
詳細には、本発明の実施形態によれば、互いに機能的に関連付けられた2以上のコンテナを2以上の別々のホスト上にデプロイすることができる。すなわち、これらの関連付けられたコンテナは、異なるホストにわたって分配される。例えば、インターネットベースのアプリケーションを構築する際に、いくつかのコンテナをネットワークドメインの外部からアクセス可能なホスト上にデプロイすることができ、その一方で、他のコンテナは、内部データへのアクセスを有する異なるホスト上にデプロイされる。こうした状況に対処するために、いくつかの実施形態において、ブリッジコンポーネントをデプロイして、分配されたコンテナ間のデータ通信を可能にすることができる。1つの実施形態において、ブリッジコンポーネントは、例えば、軽量コンテナとして実装することができる。あるいは、別の実施形態において、ブリッジコンポーネントは、関連付けられたコンテナ間の通信を担当する専用コンポーネントとすることができる。
図6は、本発明によるコンテナ・デプロイメントのためのシステム600のブロック図を示す。システム600におけるコンテナは、Dockerコンテナであり、この場合、テンプレートは、上述のように読出し専用イメージである。図示したように、この例において、候補ホスト215...215は、イベントバス605に通信可能に結合する。候補ホスト215...215は、各々、コンテナ/その上にデプロイ済みのイメージに関する情報を収集する。このような情報は、イベントバス605へ伝送されるメッセージ内にカプセル化される。メッセージの伝送は、例えば、候補ホスト215上のなんらかの変化によってトリガされ得る。イベントバス605は、メッセージをインデックスレジストリ610に格納する。インデックスレジストリ610は、ホスト、コンテナ、コンテナエンジン、ソフトウェア/ハードウェア構成などに関連した他の任意の情報をさらに格納する。
リソースアナライザ615は、インデックスレジストリ610から情報を取得し、取得した情報を解析することができる。解析の結果は、候補ホストメタデータ620として編成され、これは少なくとも、例えば各候補ホスト215の現在の作業負荷を示す。候補ホストメタデータ620は、コンテナ/イメージ情報コレクタ625へと提供される。いくつかの実施形態において、候補ホストメタデータ620に基づいて、コンテナ/イメージ情報コレクタ625は、その作業負荷が所定の閾値を超える候補ホスト215を除外することができる。残りの候補ホスト215について、コンテナ/イメージ情報コレクタ625は、インデックスレジストリ610から、候補ホスト215上の既存のライブラリ又はレイヤを少なくとも示す第1の情報を収集する。第1の情報は、この例ではコンテナ/イメージ情報630として編成される。
図7は、コンテナ/イメージ情報630の一例を示す。図示した例において、コンテナ/イメージ情報630は、拡張マークアップ言語(XML)ファイル700として実装される。コンテナ/イメージ情報630は、2つの候補ホストA及びBに関する情報を収容している。ホストAは、2つのコンテナを有し、ここでコンテナA_aは、4つのレイヤを含み、コンテナA_bは、3つのレイヤを含む。ホストBは、4つのレイヤを含む1つのコンテナB_aを有する。
図6に戻ると、コンテナ/イメージ情報630及びプロビジョン要件640の両方がプロビジョンアナライザ640へと提供される。プロビジョン要件640は、デプロイされるターゲットコンテナの要件を示す。いくつかの実施形態において、ターゲットライブラリ/レイヤを示す第2の情報は、プロビジョン要件640から誘導することができる。入力情報に基づいて、プロビジョンアナライザ640は、上述のように、適切なターゲットホスト215を選択することができる。選択されたターゲットホスト215に関する情報は、プロビジョンメタデータ645内に格納することができ、これも図7に示すファイル700と同様にXMLファイルとして実装することができる。
プロビジョンメタデータ645は、プロビジョンコマンダ650へと提供される。プロビジョンコマンダ650は、プロビジョンメタデータ645を解釈し、コンテナデプロイヤ655を制御して、選択されたターゲットホスト上にイメージを提供し及びインスタンス化して、ターゲットコンテナをデプロイする。2以上の関連付けられたコンテナが異なるホスト上にデプロイされる場合、プロビジョンコマンダ650は、ブリッジデプロイヤ660を制御してブリッジコンポーネントを構築し、デプロイされたコンテナ間の通信を可能にする。
本発明のいくつかの実施形態は、異なるホストOSサーバからの既存のイメージとターゲットとされるプロビジョニング要件との間の従属性解析を通じた効率的なコンテナプロビジョニングを提供するためのシステム及び装置に関する。これは、従来技術と比べて、すべての利用可能なサーバにわたって最小コストを判定してそこにイメージを構築する機構を提供するという独自の利点を有する。
本発明のいくつかの実施形態において、ホストサーバ、コンテナ、イメージ及びそれらの下層のレイヤを含むすべてのターゲットとされる環境の情報は、イベントバスに基づくpub/sub機構を通じて、インデックスレジストへと摂取することができる。リソースアナライザを使用して、新たなイメージを動作させるために利用可能な候補ホストを識別する。検査機構に基づいて、各コンテナ又はイメージについての構築履歴の情報をコンテナ/イメージ情報コレクタによって取得することができる。
本発明のいくつかの実施形態において、ひとたびユーザが1つの新たなイメージを要求すると、表現されたメタデータを上記の収集されたすべての情報と共に使用して、コンテクストモデルを形成することができる。各アーチファクト(これはコンテクストモデル由来のコンテナ、イメージ、レイヤ、又はホストサーバであり得る)に対して、コスト値が割り当てられる。そして、そのアーチファクトが未だロードされていなければ、そのコストがかかることになる。コスト計算及び比較に基づいて、ターゲットとされるホストサーバの情報を含む最終的なプロビジョニングメタデータを判定することができる。
さらに、本発明のいくつかの実施形態において、プロビジョンコマンダは、プロビジョニングメタデータをポピュレートして、最適化されたホストOS選択を行う。ホストOSの選択基準の1つは、ホストOSサーバ横断的なコンテナプロビジョニングを駆動することができる、ホストOSサーバ間のネットワーク通信能力に関する。この状況に従って、ブリッジデプロイヤは、各ホストOSサーバ上に2つのコンテナをプロビジョニングしてそれらを互いに接続することができる。
本発明は、システム、装置、デバイス、方法、及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のものの任意の適切な組合せとすることができるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブル・コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、例えばパンチカード若しくは記録された命令を有する溝内に隆起した構造などの機械式コード化デバイス、及び上記のものの任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で用いられる場合、無線波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバケーブルを通る光パルス)、又は電線を通って伝送される電気信号のようなそれ自体が一時的な信号と解釈すべきではない。
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることもでき、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク及び/又は無線ネットワークを経由して、外部コンピュータ若しくは外部ストレージデバイスにダウンロードすることもできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体にストレージのために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語及び「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ若しくは複数のプログラミング言語の任意の組合せで記述されたソースコード若しくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェアパッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカルエリアネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が行われる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲートアレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、その中に格納された命令を有するコンピュータ可読媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置又は他のデバイス上で行わせてコンピュータ実装のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
フローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、断片、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがあることにも留意されたい。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステムによって実装することもでき、又は専用ハードウェアとコンピュータ命令との組合せを実行することもできることにも留意されたい。
本発明の種々の実施形態の説明は、例証の目的で提示したものであるが、網羅的であることも、又は開示された実施形態に限定することも意図しない。説明した実施形態の範囲から逸脱することなく、多くの修正及び変形が当業者には明らかであろう。本明細書で用いる用語は、実施形態の原理、実際的な用途、若しくは市場において見いだされる技術に優る技術的改善を最も良く説明するように、又は当業者が本明細書に含まれる実施形態を理解することを可能にするように、選択されたものである。
18:バス
40:プログラム/ユーティリティ
42:プログラムモジュール
205:テンプレート
210:レジストリ

Claims (5)

  1. コンピュータの情報処理により、仮想機械(VM)におけるプロセスおよびリソースを隔離したコンテナについてターゲットホストを選択する方法であって、
    デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を取得するステップと、
    複数の候補ホストを決定するステップであって、前記複数の候補ホストは、
    (i)デプロイされるターゲットコンテナと同じオペレーティングシステムを利用し、
    (ii)デプロイされるターゲットコンテナによって必要とされるライブラリのセットと共通する少なくとも1つのライブラリを利用するデプロイされたコンテナを含み、
    前記複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を取得するステップであって、前記少なくとも1つのコンテナを前記複数の候補ホスト上にデプロイするために使用された情報を含むテンプレートのセットを取得し、当該テンプレートの構築履歴を解析し、前記テンプレートの従属性を決定するステップを含む、前記取得するステップと、
    前記第1の情報、前記第2の情報および前記従属性に基づいて、複数の候補ホスト上に前記ターゲットコンテナをデプロイするコストを判定するステップと、
    前記ターゲットコンテナをデプロイするための前記コストが最小となるように、前記複数の候補ホストからターゲットホストを選択するステップであって、ここで前記ターゲットコンテナは第1のコンテナであり、
    前記ターゲットホストは、前記複数の候補ホストの中から選択された第1のホストであり、
    前記第1のコンテナを前記第1のホストにデプロイするステップと、
    前記第1のコンテナに関連付けられた第2のコンテナを、前記第1のホストとは異なる、前記複数の候補ホストから選択された第2のホストにデプロイするステップと、
    前記第1のコンテナと前記第2のコンテナとの間でデータを通信するように動作可能なブリッジコンポーネントをデプロイするステップと、
    を含む、方法。
  2. 前記ターゲットコンテナをデプロイする前記コストを判定するステップは、前記複数の候補ホストの中からの所与の候補ホストに対して、
    前記第1の情報、前記第2の情報および前記従属性に基づいて、前記ターゲットライブラリのセットと前記所与の候補ホスト上にロード済みのライブラリのセットとの間の一致度を判定するステップと、
    前記一致度に少なくとも部分的に基づいて、前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定するステップと、
    を含む、請求項1に記載の方法。
  3. 請求項1〜の何れか1項に記載の方法の各ステップをハードウェアによる手段として構成した、コンピュータシステム。
  4. 請求項1〜のいずれか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータプログラム。
  5. 請求項4に記載の前記コンピュータプログラムをコンピュータ可読ストレージ媒体上に格納した、ストレージ媒体
JP2018504148A 2015-08-18 2016-08-02 従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム Active JP6826586B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/828,564 2015-08-18
US14/828,564 US9965261B2 (en) 2015-08-18 2015-08-18 Dependency-based container deployment
PCT/CN2016/092780 WO2017028680A1 (en) 2015-08-18 2016-08-02 Dependency-based container deployment

Publications (2)

Publication Number Publication Date
JP2018530033A JP2018530033A (ja) 2018-10-11
JP6826586B2 true JP6826586B2 (ja) 2021-02-03

Family

ID=58051973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018504148A Active JP6826586B2 (ja) 2015-08-18 2016-08-02 従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム

Country Status (6)

Country Link
US (2) US9965261B2 (ja)
JP (1) JP6826586B2 (ja)
CN (1) CN107924323B (ja)
DE (1) DE112016003249T5 (ja)
GB (1) GB2557093B (ja)
WO (1) WO2017028680A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230060941A (ko) * 2021-10-28 2023-05-08 에스케이텔레콤 주식회사 가상네트워크관리장치 및 가상네트워크관리장치의 동작 방법

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160350081A1 (en) * 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
US10025611B2 (en) * 2015-10-20 2018-07-17 International Business Machines Corporation Server build optimization
WO2017113374A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 镜像部署方法和装置
US11283900B2 (en) 2016-02-08 2022-03-22 Microstrategy Incorporated Enterprise performance and capacity testing
US10440153B1 (en) 2016-02-08 2019-10-08 Microstrategy Incorporated Enterprise health score and data migration
US10291706B1 (en) * 2016-03-24 2019-05-14 EMC IP Holding Company LLC Container image distribution acceleration
US10210024B2 (en) * 2016-08-23 2019-02-19 Samsung Electronics Co., Ltd. Intelligent controller for containerized applications
US10412154B2 (en) * 2017-04-17 2019-09-10 Red Hat, Inc. Configuration recommendation for a microservice architecture
JP6581155B2 (ja) * 2017-07-28 2019-09-25 日本電信電話株式会社 不要ファイル検出装置、不要ファイル検出方法および不要ファイル検出プログラム
CN111279309A (zh) * 2017-09-30 2020-06-12 甲骨文国际公司 基于环境要求的容器部署
US10572294B1 (en) * 2018-01-03 2020-02-25 Amazon Technologies, Inc. Automated application footprint discovery for application migration to containers
US10929117B2 (en) * 2018-02-08 2021-02-23 Red Hat, Inc. Container image building using shared resources
US10970258B2 (en) * 2018-02-23 2021-04-06 Red Hat, Inc. Managing container-image layers
US10977066B2 (en) 2018-04-06 2021-04-13 Red Hat, Inc. Virtual machine to container conversion and optimization
US10901751B2 (en) 2018-05-17 2021-01-26 International Business Machines Corporation Temporal layers for container technologies
WO2020037204A1 (en) * 2018-08-17 2020-02-20 Ivanti, Inc. Methods and apparatus for safe and smart distribution of software patches
US10558455B1 (en) 2018-10-23 2020-02-11 International Business Machines Corporation Managing an update of a software module in a layered filesystem
US10896067B2 (en) * 2019-01-11 2021-01-19 Hewlett Packard Enterprise Development Lp Determining the cost of container-based workloads
US20200301789A1 (en) 2019-03-18 2020-09-24 International Business Machines Corporation File Sharing Among Virtual Containers with Fast Recovery and Self-Consistency
US11163552B2 (en) * 2019-04-15 2021-11-02 International Business Machines Corporation Federated framework for container management
US11068243B2 (en) * 2019-06-04 2021-07-20 Red Hat, Inc. Application stack builder based on node features
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
US11106455B2 (en) 2019-08-15 2021-08-31 Microstrategy Incorporated Integration of containers with external elements
US11637748B2 (en) 2019-08-28 2023-04-25 Microstrategy Incorporated Self-optimization of computing environments
US11507295B2 (en) 2019-08-30 2022-11-22 Microstrategy Incorporated Backup, restoration, and migration of computer systems
US11210189B2 (en) 2019-08-30 2021-12-28 Microstrategy Incorporated Monitoring performance of computing systems
US10972548B2 (en) 2019-09-09 2021-04-06 International Business Machines Corporation Distributed system deployment
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11487878B1 (en) 2019-09-18 2022-11-01 Amazon Technologies, Inc. Identifying cooperating processes for automated containerization
US11442765B1 (en) * 2019-09-18 2022-09-13 Amazon Technologies, Inc. Identifying dependencies for processes for automated containerization
US11245636B2 (en) 2019-09-20 2022-02-08 International Business Machines Corporation Distributing computing resources based on location
US11360881B2 (en) 2019-09-23 2022-06-14 Microstrategy Incorporated Customizing computer performance tests
US11438231B2 (en) 2019-09-25 2022-09-06 Microstrategy Incorporated Centralized platform management for computing environments
US11463478B2 (en) 2019-10-29 2022-10-04 International Business Machines Corporation Remediation strategy optimization for development, security and operations (DevSecOps)
US11836158B2 (en) 2020-02-03 2023-12-05 Microstrategy Incorporated Deployment of container-based computer environments
US11449320B2 (en) * 2020-04-03 2022-09-20 Sap Se Mechanism for deploying legacy applications on new generation hyperscalers
US11650810B1 (en) 2020-05-27 2023-05-16 Amazon Technologies, Inc. Annotation based automated containerization
JP2022014972A (ja) * 2020-07-08 2022-01-21 富士通株式会社 情報処理装置及び配置先決定プログラム
US11256493B1 (en) 2020-11-03 2022-02-22 Bank Of America Corporation Container image optimizer
US11573818B2 (en) 2020-11-24 2023-02-07 International Business Machines Corporation Containerized computing environments
US20220206772A1 (en) * 2020-12-30 2022-06-30 Accenture Global Solutions Limited Scalable, robust, and secure multi-tenant edge architecture for mission-critical applications
US11954473B2 (en) 2021-09-20 2024-04-09 Microstrategy Incorporated Deployment architecture for multi-tenant cloud computing systems
US11861342B2 (en) 2022-01-28 2024-01-02 Microstrategy Incorporated Enhanced cloud-computing environment deployment

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US20040068553A1 (en) * 2002-10-07 2004-04-08 International Business Machines Corporation Dynamically selecting a Web service container for hosting remotely instantiated Web services
US7284054B2 (en) * 2003-04-11 2007-10-16 Sun Microsystems, Inc. Systems, methods, and articles of manufacture for aligning service containers
US8122446B2 (en) * 2005-11-03 2012-02-21 International Business Machines Corporation Method and apparatus for provisioning software on a network of computers
US7802083B2 (en) 2006-12-20 2010-09-21 Intel Corporation Utilization based installation on a computing system
US10108460B2 (en) * 2008-02-28 2018-10-23 International Business Machines Corporation Method and system for integrated deployment planning for virtual appliances
JP5682709B2 (ja) * 2011-07-04 2015-03-11 富士通株式会社 配置設計プログラム及び方法、並びに情報処理装置
CN104350460A (zh) 2012-04-30 2015-02-11 惠普发展公司,有限责任合伙企业 确定虚拟机放置
CN103885831B (zh) * 2012-12-19 2017-06-16 中国电信股份有限公司 虚拟机宿主机的选择方法与装置
CN103916417B (zh) * 2012-12-31 2017-09-05 华为技术有限公司 一种部署应用的方法和调度器
CN104239159A (zh) 2013-06-11 2014-12-24 鸿富锦精密工业(深圳)有限公司 虚拟机维护系统及方法
JP6136738B2 (ja) * 2013-08-09 2017-05-31 富士通株式会社 管理プログラム、管理装置および管理方法
US20150082298A1 (en) * 2013-09-19 2015-03-19 Qiu Shi WANG Packaging and deploying hybrid applications
CN103580923B (zh) * 2013-11-08 2017-02-15 华为技术有限公司 软件部署的方法和装置
US20160026442A1 (en) * 2014-07-25 2016-01-28 Mahesh Kumar Chhaparia Method and system for hosting and running user configured dynamic applications through a software container on a computing device
CA2878759C (en) 2015-01-20 2015-12-22 Sphere 3D Inc. Methods and systems for providing software applications
US10243879B2 (en) * 2015-03-13 2019-03-26 Microsoft Technology Licensing, Llc Intelligent placement within a data center
CN104767741B (zh) 2015-03-24 2018-03-06 杭州安恒信息技术有限公司 一种基于轻型虚拟机的计算服务分离与安全保护系统
US9817584B2 (en) * 2015-06-02 2017-11-14 Prophetstor Data Services, Inc. Storage system having node with light weight container

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230060941A (ko) * 2021-10-28 2023-05-08 에스케이텔레콤 주식회사 가상네트워크관리장치 및 가상네트워크관리장치의 동작 방법
KR102660421B1 (ko) 2021-10-28 2024-04-23 에스케이텔레콤 주식회사 가상네트워크관리장치 및 가상네트워크관리장치의 동작 방법

Also Published As

Publication number Publication date
GB2557093A (en) 2018-06-13
GB2557093B (en) 2019-02-13
US20170052771A1 (en) 2017-02-23
US9959104B2 (en) 2018-05-01
JP2018530033A (ja) 2018-10-11
WO2017028680A1 (en) 2017-02-23
CN107924323A (zh) 2018-04-17
US9965261B2 (en) 2018-05-08
GB201802323D0 (en) 2018-03-28
DE112016003249T5 (de) 2018-04-26
CN107924323B (zh) 2022-03-01
US20170052772A1 (en) 2017-02-23

Similar Documents

Publication Publication Date Title
JP6826586B2 (ja) 従属性に基づくコンテナ・デプロイメント方法、システム、およびプログラム
JP6802052B2 (ja) 透明で安全なインターセプション処理のための方法、コンピュータ・システム、ファームウェア、ハイパーバイザおよびコンピュータ・プログラム
US11163728B2 (en) Sharing container images utilizing a shared storage system
US10922123B2 (en) Container migration in computing systems
US9747121B2 (en) Performance optimization of workloads in virtualized information handling systems
US20150205542A1 (en) Virtual machine migration in shared storage environment
US11924117B2 (en) Automated local scaling of compute instances
US20150177997A1 (en) Creating new virtual machines based on post-boot virtual machine snapshots
US9766834B2 (en) Live partition mobility using ordered memory migration
US10169069B2 (en) System level update protection based on VM priority in a multi-tenant cloud environment
CN113826072A (zh) 系统管理模式中的代码更新
US11886867B2 (en) Workflow patching
US10223222B2 (en) Storage system-based replication for disaster recovery in virtualized environments
US20180203766A1 (en) Parallel data collection and recovery for failing virtual computer processing system
US11238015B2 (en) Instant hyper-v streaming
US20230015103A1 (en) Live updating a virtual machine virtualizing physical resources
US11960917B2 (en) Live migration and redundancy for virtualized storage
US11567796B2 (en) Configuring hardware multithreading in containers
US11805012B2 (en) Cloud network mechanism driver migration
US20170206091A1 (en) Sharing ownership of an input/output device with an existing partition

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180306

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191112

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201013

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201218

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: 20210112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210115

R150 Certificate of patent or registration of utility model

Ref document number: 6826586

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150