特表2018-530033(P2018-530033A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特表2018-530033従属性に基づくコンテナ・デプロイメント
<>
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000003
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000004
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000005
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000006
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000007
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000008
  • 特表2018530033-従属性に基づくコンテナ・デプロイメント 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2018-530033(P2018-530033A)
(43)【公表日】2018年10月11日
(54)【発明の名称】従属性に基づくコンテナ・デプロイメント
(51)【国際特許分類】
   G06F 9/50 20060101AFI20180914BHJP
   G06F 9/455 20060101ALI20180914BHJP
   G06F 8/60 20180101ALI20180914BHJP
【FI】
   G06F9/50 150C
   G06F9/455 150
   G06F9/50 150D
   G06F8/60
【審査請求】未請求
【予備審査請求】未請求
【全頁数】27
(21)【出願番号】特願2018-504148(P2018-504148)
(86)(22)【出願日】2016年8月2日
(85)【翻訳文提出日】2018年1月26日
(86)【国際出願番号】CN2016092780
(87)【国際公開番号】WO2017028680
(87)【国際公開日】20170223
(31)【優先権主張番号】14/828,564
(32)【優先日】2015年8月18日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
2.Linux
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】チェン、シャオローン
(72)【発明者】
【氏名】カミンスキー、デービッド、ルイス
(72)【発明者】
【氏名】ワン、シーニン
(72)【発明者】
【氏名】イエン、ジゥー
(72)【発明者】
【氏名】ジャオ、ジァン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AA10
5B376AA32
5B376AA34
(57)【要約】
【課題】 コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラム製品を提供すること
【解決手段】 コンテナ・デプロイメントのための方法、デバイス及びコンピュータプログラム製品。デプロイされるターゲットコンテナによって必要とされるターゲットライブラリと、候補ホスト上にロード済みのライブラリとを比較することによって、ターゲットコンテナを候補ホスト上にデプロイするコストを見積もることができる。次いで、判定されたコストに基づいて、複数の候補ホストの中からターゲットホストが選択される。
【選択図】 図4
【特許請求の範囲】
【請求項1】
デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得ることと、
複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得ることと、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットコンテナを前記複数の候補ホスト上にデプロイするコストを判定することと、
前記ターゲットコンテナをデプロイするための前記コストに基づいて、前記複数の候補ホストからターゲットホストを選択することと、
を含む、コンピュータ実装方法。
【請求項2】
第2の情報を得ることは、
前記少なくとも1つのコンテナを前記複数の候補ホスト上にデプロイするために使用されたテンプレートのセットの構築履歴を解析することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ターゲットコンテナをデプロイする前記コストを判定することは、前記複数の候補ホストの中からの所与の候補ホストに対して、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットライブラリのセットと前記所与の候補ホスト上にロード済みのライブラリのセットとの間の一致度を判定することと、
前記一致度に少なくとも部分的に基づいて、前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定することと、
を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記ターゲットコンテナをデプロイする前記コストを判定することは、前記ターゲットライブラリを前記所与の候補ホストにロードするコストを判定することをさらに含み、
前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定することは、さらに、前記ターゲットライブラリのセットを前記所与の候補ホストにロードする前記コストに少なくとも部分的に基づく、
請求項3に記載のコンピュータ実装方法。
【請求項5】
前記複数の候補ホストの作業負荷のセットを示す第3の情報を得ることをさらに含み、
ターゲットホストを選択することは、さらに前記第3の情報に少なくとも部分的に基づいて、前記ターゲットホストに対応する前記作業負荷のセットからの作業負荷が所定の閾値を下回るようにする、
請求項1に記載のコンピュータ実装方法。
【請求項6】
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストは、前記複数の候補ホストの中からの第1のホストであり、
前記第1のコンテナを前記第1のホストにデプロイすることと、
前記第1のコンテナに関連付けられた第2のコンテナを、前記第1のホストとは異なる、前記複数の候補ホストからの第2のホストにデプロイすることと、
前記第1のコンテナと前記第2のコンテナとの間でデータを通信するように動作可能なブリッジコンポーネントをデプロイすることと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
第2のコンテナを前記複数の候補ホスト上にデプロイするコストを判定することをさらに含み、
ここで、
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストを選択することは、前記第1のコンテナをデプロイする前記コスト及び前記第2のコンテナをデプロイする前記コストに少なくとも部分的に基づいて、前記第1のコンテナ及び前記第2のコンテナをデプロイする総コストが所定の閾値を下回るように前記ターゲットホストを選択することを含む、
請求項1に記載のコンピュータ実装方法。
【請求項8】
プロセッサセットと、
コンピュータ可読ストレージ媒体と、
を含むコンピュータシステムであって、
前記プロセッサセットは、前記コンピュータ可読ストレージ媒体上に格納されたプログラム命令を動作させるように構造化され、配置され、接続され、及び/又はプログラムされており、
前記プログラム命令は、
デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得るようにプログラムされたプログラム命令と、
複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得るようにプログラムされたプログラム命令と、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットコンテナを前記複数の候補ホスト上にデプロイするコストを判定するようにプログラムされたプログラム命令と、
前記ターゲットコンテナをデプロイするための前記コストに基づいて、前記複数の候補ホストからターゲットホストを選択するようにプログラムされたプログラム命令と、
を含む、コンピュータシステム。
【請求項9】
第2の情報を得るようにプログラムされた前記プログラム命令は、
前記少なくとも1つのコンテナを前記複数の候補ホスト上にデプロイするために使用されたテンプレートのセットの構築履歴を解析するようにプログラムされたプログラム命令を含む、
請求項8に記載のコンピュータシステム。
【請求項10】
前記ターゲットコンテナをデプロイする前記コストを判定するようにプログラムされた前記プログラム命令は、前記複数の候補ホストの中からの所与の候補ホストに対して、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットライブラリのセットと前記所与の候補ホスト上にロード済みのライブラリのセットとの間の一致度を判定するようにプログラムされたプログラム命令と、
前記一致度に少なくとも部分的に基づいて、前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定するようにプログラムされたプログラム命令と、
を含む、請求項8に記載のコンピュータシステム。
【請求項11】
前記ターゲットコンテナをデプロイする前記コストを判定するようにプログラムされた前記プログラム命令は、前記ターゲットライブラリを前記所与の候補ホストにロードするコストを判定することをさらに含み、
前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定するようにプログラムされた前記プログラム命令は、さらに、前記ターゲットライブラリのセットを前記所与の候補ホストにロードする前記コストに少なくとも部分的に基づく、
請求項10に記載のコンピュータシステム。
【請求項12】
前記複数の候補ホストの作業負荷のセットを示す第3の情報を得るようにプログラムされたプログラム命令をさらに含み、
ターゲットホストを選択するようにプログラムされた前記プログラム命令は、さらに前記第3の情報に少なくとも部分的に基づいて、前記ターゲットホストに対応する前記作業負荷のセットからの作業負荷が所定の閾値を下回るようにする、
請求項8に記載のコンピュータシステム。
【請求項13】
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストは、前記複数の候補ホストの中からの第1のホストであり、
前記第1のコンテナを前記第1のホストにデプロイするようにプログラムされたプログラム命令と、
前記第1のコンテナに関連付けられた第2のコンテナを、前記第1のホストとは異なる、前記複数の候補ホストからの第2のホストにデプロイするようにプログラムされたプログラム命令と、
前記第1のコンテナと前記第2のコンテナとの間でデータを通信するように動作可能なブリッジコンポーネントをデプロイするようにプログラムされたプログラム命令と、
をさらに含む、請求項8に記載のコンピュータシステム。
【請求項14】
第2のコンテナを前記複数の候補ホスト上にデプロイするコストを判定するようにプログラムされたプログラム命令をさらに含み、
ここで、
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストを選択するようにプログラムされた前記プログラム命令は、前記第1のコンテナをデプロイする前記コスト及び前記第2のコンテナをデプロイする前記コストに少なくとも部分的に基づいて、前記第1のコンテナ及び前記第2のコンテナをデプロイする総コストが所定の閾値を下回るように前記ターゲットホストを選択することを含む、
請求項8に記載のコンピュータシステム。
【請求項15】
デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す、第1の情報を得るようにプログラムされたプログラム命令と、
複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得るようにプログラムされたプログラム命令と、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットコンテナを前記複数の候補ホスト上にデプロイするコストを判定するようにプログラムされたプログラム命令と、
前記ターゲットコンテナをデプロイするための前記コストに基づいて、前記複数の候補ホストからターゲットホストを選択するようにプログラムされたプログラム命令と、
を含む、コンピュータプログラム。
【請求項16】
第2の情報を得るようにプログラムされた前記プログラム命令は、
前記少なくとも1つのコンテナを前記複数の候補ホスト上にデプロイするために使用されたテンプレートのセットの構築履歴を解析するようにプログラムされたプログラム命令を含む、
請求項15に記載のコンピュータプログラム。
【請求項17】
前記ターゲットコンテナをデプロイする前記コストを判定するようにプログラムされた前記プログラム命令は、前記複数の候補ホストの中からの所与の候補ホストに対して、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットライブラリのセットと前記所与の候補ホスト上にロード済みのライブラリのセットとの間の一致度を判定するようにプログラムされたプログラム命令と、
前記一致度に少なくとも部分的に基づいて、前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定するようにプログラムされたプログラム命令と、
を含む、請求項15に記載のコンピュータプログラム。
【請求項18】
前記ターゲットコンテナをデプロイする前記コストを判定するようにプログラムされた前記プログラム命令は、前記ターゲットライブラリを前記所与の候補ホストにロードするコストを判定することをさらに含み、
前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定するようにプログラムされた前記プログラム命令は、さらに、前記ターゲットライブラリのセットを前記所与の候補ホストにロードする前記コストに少なくとも部分的に基づく、
請求項17に記載のコンピュータプログラム。
【請求項19】
前記複数の候補ホストの作業負荷のセットを示す第3の情報を得るようにプログラムされたプログラム命令をさらに含み、
ターゲットホストを選択するようにプログラムされた前記プログラム命令は、さらに前記第3の情報に少なくとも部分的に基づいて、前記ターゲットホストに対応する前記作業負荷のセットからの作業負荷が所定の閾値を下回るようにする、
請求項15に記載のコンピュータプログラム。
【請求項20】
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストは、前記複数の候補ホストの中からの第1のホストであり、
前記第1のコンテナを前記第1のホストにデプロイするようにプログラムされたプログラム命令と、
前記第1のコンテナに関連付けられた第2のコンテナを、前記第1のホストとは異なる、前記複数の候補ホストからの第2のホストにデプロイするようにプログラムされたプログラム命令と、
前記第1のコンテナと前記第2のコンテナとの間でデータを通信するように動作可能なブリッジコンポーネントをデプロイするようにプログラムされたプログラム命令と、
をさらに含む、請求項15に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、仮想機械に関し、より詳細には、コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラムに関する。
【背景技術】
【0002】
仮想機械(VM)は、仮想化を創出するために広く使用されている。VMは、コンピュータアーキテクチャ、及び、現実の又は仮想のコンピュータの機能に基づいて動作する。VMは、物理機械の様にプログラムを実行する機械のソフトウェア実装である。単一の物理機械は、その上で実行される多数のVMをサポートすることができ、これらVMを「ハイパバイザ」と呼ばれるプログラムを使用して管理することができる。伝統的なVMアーキテクチャは、各VMにゲストオペレーティングシステム(OS)をデプロイしなければならないので、リソースの浪費を生じさせる。
【0003】
コンテナは、プロセス及び/又はリソースを隔離することを可能にする軽量な仮想化を、完全仮想化の命令翻訳機構及び/又はその他の複雑さをもたらすことを必要とせずに提供する。Linux Container(LXC)などのコンテナ技術は、プロセス及びリソースを隔離することを可能にする軽量な仮想化を、完全仮想化の命令翻訳機構及びその他の複雑さをもたらすことを必要とせずに提供する。コンテナは、単一のホストオペレーティングシステム(OS)によって管理されるリソースを効果的に分割して隔離されたグループとし、これら隔離されたグループ間でリソース使用率に対する競合する要求をうまく均衡させる。すなわち、コンテナ技術は、共通OS及び場合によってはいくつかの適切なバイナリファイル又はライブラリの共有を可能にする。
【0004】
Dockerは、オープンソースプロジェクトであり、これはLinux上でオペレーティングシステムレベル仮想化の抽象化及び自動化の追加レイヤを提供することによって、ソフトウェアコンテナの内部でのアプリケーションのデプロイメントを自動化する。(注:「Docker」及び「Linux」という用語は、世界中の様々な管轄権において商標権の対象である場合があり、本明細書においては、このような商標権が存在し得る範囲で標章によって適正に称される製品又はサービスに対して言及する場合にのみ使用される。)Dockerは、cgroup及びカーネル名前空間などのLinuxカーネルのリソース隔離特徴を使用して、独立した「コンテナ」が単一のLinuxインスタンス内で動作することを可能にし、仮想機械の起動及び維持のオーバヘッドを回避する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラムを提供することである。
【課題を解決するための手段】
【0006】
一般に、本発明の例示的な実施形態は、コンテナ・デプロイメントのための方法、デバイスおよびコンピュータプログラムを含む。
【0007】
一態様において、コンピュータ実装方法が提供される。上記方法によれば、第1の情報及び第2の情報が得られる。第1の情報は、デプロイされるターゲットコンテナによって必要とされるターゲットライブラリを示し、第2の情報は、複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリを示す。次いで、ターゲットコンテナを複数の候補ホスト上にデプロイするコストが、第1の情報及び第2の情報に基づいて判定される。ターゲットホストは、判定されたコストに基づいて複数の候補ホストの中から選択され、選択されたターゲットホスト上にターゲットコンテナがデプロイされるようになっている。
【0008】
別の態様において、デバイスが提供される。デバイスは、処理ユニットと、処理ユニットに結合された、命令を格納するメモリとを含む。上記命令は、処理ユニットによって実行されたときに、以下の動作、すなわち、デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得ることと、複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得ることと、第1の情報及び前記第2の情報に基づいて、ターゲットコンテナを複数の候補ホスト上にデプロイするコストを判定することと、ターゲットコンテナをデプロイするための判定されたコストに基づいて、複数の候補ホストの中からターゲットホストを選択することと、を行う。
【0009】
さらに別の態様において、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、非一時的な機械可読媒体上に有形に格納され、機械実行可能命令を含む。上記命令は、デバイス上で実行されたときに、該デバイスに、デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得させ、複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得させ、第1の情報及び第2の情報に基づいて、ターゲットコンテナを複数の候補ホスト上にデプロイするコストを判定させ、ターゲットコンテナをデプロイするための判定されたコストに基づいて、複数の候補ホストの中からターゲットホストを選択させる。
【0010】
本概要は、本発明の実施形態の重要な又は必須の特徴を識別することを意図したものでもなく、本発明の範囲を限定することを意図したものでもないことを理解されたい。本発明の他の特徴は、以下の説明を通じて容易に理解できるであろう。
【0011】
添付図面中の本開示のいくつかの実施形態のより詳細な説明を通じて、本開示の上記及び他の目的、特徴及び利点は、より明らかになるであろう。
【0012】
図面全体を通じて、同じ又は類似の符号は、同じ又は類似の要素を表す。
【図面の簡単な説明】
【0013】
図1】本発明の実施形態を実装することができる電子デバイスのブロック図である。
図2】本発明の実施形態によるコンテナ・デプロイメントに基づくテンプレートの模式図である。
図3】本発明の実施形態を実装することができる環境のブロック図である。
図4】本発明の実施形態によるコンテナ・デプロイメントのための方法のフローチャートである。
図5】本発明の実施形態によるdockerfileの一例のスクリーンショットである。
図6】本発明によるコンテナ・デプロイメントのためのシステムのブロック図である。
図7】本発明によるコンテナ/イメージ情報として機能するファイルのスクリーンショットである。
【発明を実施するための形態】
【0014】
本発明の原理を、ここでいくつかの実施形態を参照して説明する。これらの実施形態は、単に例示の目的で説明され、当業者が本発明を理解すること及び実施することを補助するものであり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。本明細書で説明する発明は、以下で説明する以外の種々のやり方で実施することができる。
【0015】
本明細書で使用する場合、「含む」という用語は、「含むが、それらに限定されない」を意味する、オープンな用語として解釈すべきである。「基づく」という用語は、「少なくとも部分的に基づく」と解釈すべきである。「1つの実施形態」及び「実施形態」という用語は、「少なくとも1つの実施形態」と解釈すべきである。「別の実施形態」という用語は、「少なくとも1つの他の実施形態」と解釈すべきである。他の定義は、明示的及び暗黙的に、下記に含まれ得る。
【0016】
最初に、本発明の実施形態を実施するのに適用可能な例示的な電子デバイス又はコンピュータシステム/サーバ12が示された図1を参照する。コンピュータシステム/サーバ12は、単なる例示であり、本明細書で説明する本発明の実施形態の使用又は機能の範囲に関していかなる限定を示唆することも意図しない。
【0017】
図1に示すように、コンピュータシステム/サーバ12は、汎用コンピュータデバイスの形態で示される。コンピュータシステム/サーバ12のコンポーネントは、1つ又は複数のプロセッサ又は処理ユニット16と、システムメモリ28と、システムメモリ28を含む種々のシステムコンポーネントをプロセッサ16に結合するバス18とを含むことができるが、これらに限定されない。
【0018】
バス18は、任意の多様なバスアーキテクチャを使用した、メモリバス又はメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、及びプロセッサ又はローカルバスを含む、いくつかのタイプのバス構造のいずれかのうちの1つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、インダストリー・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、及びペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
【0019】
コンピュータシステム/サーバ12は、典型的には、多様なコンピュータシステム可読媒体を含む。このような媒体は、コンピュータシステム/サーバ12によってアクセス可能な任意の使用可能な媒体とすることができ、これは揮発性及び不揮発性媒体、取外し可能及び取外し不能媒体の両方を含む。
【0020】
このようなメモリ28は、ランダムアクセスメモリ(RAM)30及び/又はキャッシュメモリ32などの、揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ12は、他の取外し可能/取外し不能、揮発性/不揮発性コンピュータシステムストレージ媒体をさらに含むことができる。単なる例示として、取外し不能な不揮発性磁気媒体(図示せず、典型的には「ハードドライブ」と称される)の読出し及び書込みのためにストレージシステム34を設けることができる。図示されていないが、取出し可能な不揮発性磁気ディスク(例えば「フロッピーディスク」)の読出し及び書込みのための磁気ディスクドライブ、及び、CD−ROM、DVD−ROM又は他の光学媒体などの取出し可能な不揮発性光ディスクの読出し又は書込みのための光ディスクドライブを設けることができる。このような事例において、各々は、1つ又は複数の媒体インタフェースによってバス18に接続することができる。さらに下記で示され説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば少なくとも1つ)を有する、少なくとも1つのプログラム製品を含むことができる。
【0021】
プログラムモジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、メモリ28内に、オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータと同様に、格納されることができる。オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータ又はそれらのいくつかの組合せの各々は、ネットワーク環境の実装を含むことができる。プログラムモジュール42は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法論を実行する。
【0022】
コンピュータシステム/サーバ12は、キーボード、ポインティングデバイス、ディスプレイ24などのような1つ又は複数の外部デバイス14と通信することもできる。ユーザがコンピュータシステム/サーバ12と相互作用することを可能にする1つ又は複数のデバイス、及び/又は、コンピュータシステム/サーバ12が1つ又は複数の他のコンピューティングデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等)。このような通信は、入力/出力(I/O)インタフェース22を介して行うことができる。さらにまた、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して、ローカルエリアネットワーク(LAN)、汎用広域ネットワーク(WAN)及び/又は公衆ネットワーク(例えばインターネット)などの、1つ又は複数のネットワークと通信することができる。図示したように、ネットワークアダプタ20は、バス18を介して、コンピュータシステム/サーバ12の他のコンポーネントと通信する。図示していないが、他のハードウェア及び/又はソフトウェアコンポーネントをコンピュータシステム/サーバ12と共に使用することができることを理解されたい。例として、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブ・ストレージシステムなどが挙げられるがそれらに限定されない。
【0023】
コンピュータシステム/サーバ12において、I/Oインタフェース22は、コンピュータシステム/サーバ12へ入力を提供するために使用することができる種々の異なる入力デバイスの1つ又は複数をサポートし得る。例えば、入力デバイスは、キーボード、キーパッド、タッチパッド、トラックボールなどのユーザデバイスを含み得る。入力デバイスは、音声認識、タッチ及びスタイラス認識、入力デバイスに接触した及び入力デバイス近傍のジェスチャの認識、エアジェスチャの認識、頭部及び視線の追跡、音声(voice)及び音声(speech)認識、ユーザの脳の活動の検知、及び人工知能などの、1つ又は複数のナチュラル・ユーザインタフェース技術を実装することができる。
【0024】
従属性に基づくコンテナ・デプロイメントのいくつかの例示的な実施形態を以下の段落において説明する。本発明の実施形態によれば、新たなコンテナをデプロイするとき、その新たなコンテナによって必要とされるライブラリと候補ホストにロード済みのライブラリとの従属性を考慮に入れる。一般的に言って、新たなコンテナは、必要とされるライブラリをできるだけ多く既にロード済みのホストにデプロイされる。追加のライブラリによって生じる計算のオーバヘッドを低減又は排除することによって、デプロイメントコストを最小化することができる。いくつかの実施形態において、ターゲットホストは、ライブラリの特性、ホストの作業負荷、1つ又は複数のデプロイされるその他のコンテナなどのような他の関連要因にさらに基づいて選択することが可能である。
【0025】
以下の説明において、本発明の原理を、テンプレートに基づいてコンテナがデプロイされる実施形態を参照して説明する。しかしながら、テンプレートに基づくコンテナ・デプロイメントは単なる例示的な機構であり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。代替的な実施形態において、コンテナは、任意の他の適切な機構によってデプロイすることができる。
【0026】
図2は、テンプレートに基づくコンテナ・デプロイメントの模式図を示す。1つ又は複数のテンプレート205を前もって作成することができる。テンプレートは、コンテナをデプロイ及び構築するのに使用することができる情報を収容することができる。例えば、テンプレートは、ウェブアプリケーションがインストールされたオペレーティングシステムを収容することができる。特定のパラメータ値及び/又はネットワーク構成などの構成は、テンプレートがホスト上にデプロイされたときにインスタンス化される。例として、Dockerコンテナの場合、テンプレート205は、「イメージ」と呼ばれる。(注:「Docker」という用語は、世界中の様々な管轄権において商標権の対象である場合があり、本明細書においては、このような商標権が存在し得る範囲で標章によって適正に称される製品又はサービスに対して言及する場合にのみ使用される。)テンプレート205は、レジストリ210内にアップロードされ、格納されることができる。本明細書を全体を通してDocker及びDocker固有の要素について言及しているが、本発明の態様は、コンテナ・デプロイメントが実施される他の自動化プログラムに対しても等しく適用できることを理解されたい。
【0027】
テンプレート205は、ホスト215にプロビジョニングされて、ホスト215上で実行されるホストOS220上でインスタンス化され得る。コンテナエンジン225は、コンテナを管理及び制御するために、ホストOS220上で実行される。ホスト215は、1つ又は複数のコンテナ230及び240を含むことができ、その各々は、1つ又は複数のテンプレートに基づいて構築される。Dockerコンテナのようなある種のコンテナの場合、テンプレートは、読出し専用イメージである。テンプレート205のインスタンス化は、テンプレートの最上部に書込み可能レイヤを作成することによって行われる。例えば、図2に示すように、書込み可能レイヤ232及び242は、それぞれコンテナ230及び240を構築するために作成される。
【0028】
テンプレートは、「ペアレントテンプレート」と称することができる1つ又は複数のテンプレートを参照することができる。ペアレントテンプレートを有さない下層のテンプレートは、「ベーステンプレート」と称される。図2に示す例において、コンテナ230は、テンプレート231...231を伴い、コンテナ240は、テンプレート241...241を伴う。このようにして、コンテナは、書込み可能レイヤ、ペアレントテンプレート(存在する場合)に関する情報を伴うその対応するテンプレート、及び一意識別子、ネットワーク構成、リソース割当などのような追加情報によって定義することができる。
【0029】
一般的に言って、テンプレートをデプロイする際に、1つ又は複数のライブラリがホスト215上にロードされることが必要である。Dockerコンテナにおいて、ライブラリはレイヤに配置されることができ、それゆえテンプレートに対する各ライブラリをレイヤとみなすことができる。例えば、図2に示すように、テンプレート231は、ライブラリ/レイヤ235...235を収容する。異なるコンテナ/テンプレートが1つ又は複数の共通のライブラリを共有することができる。このようにして、ライブラリ/レイヤは、異なるコンテナ/テンプレートの従属性を定めることができる。本発明の実施形態によれば、このような従属性を用いて、新たなコンテナの効率的なデプロイメントが達成される。
【0030】
図3は、本発明の実施形態を実装することができる環境300のブロック図を示す。図示したように、環境300の中に、複数の候補ホスト215、...、215(集合的に「ホスト215」と称される)が存在する。候補ホスト215の各々は、既にその上にデプロイされた少なくとも1つのコンテナを含む。コンテナマネージャ310は、コンテナのデプロイメントを制御する。いくつかの実施形態において、コンテナマネージャ310は、例えば、図1を参照して上述したようなコンピュータシステム/サーバ12によって実装することができる。
【0031】
コンテナ(「ターゲットコンテナ」と称される)が構築される場合、コンテナマネージャ310は、候補ホスト215の中から適切なホストを選択する。この目的のために、コンテナマネージャ310は、ターゲットコンテナによって必要とされるライブラリ(「ターゲットライブラリ」と称される)を判定する。いくつかの実施形態において、これは、ターゲットコンテナについてのプロビジョン要件320を解析することによって行うことができる。例えば、テンプレートに基づくコンテナ・デプロイメントが使用される実施形態において、コンテナマネージャ310は、最初にターゲットコンテナをデプロイするためのテンプレートを判定し、次いでそのテンプレートのためのライブラリを判定することができる。コンテナマネージャ310は、候補ホスト215上にデプロイされたコンテナの構成情報をさらに収集する。構成情報は、候補ホスト215の各々の上にロード済みのライブラリを少なくとも示す。
【0032】
収集された情報に基づいて、コンテナマネージャ310は、ターゲットコンテナを候補ホスト215の各々の上にデプロイするコストを、ターゲットコンテナと既存のライブラリとの間の従属性に少なくとも部分的に基づいて判定する。コンテナマネージャ310は、次いで、デプロイメントコストが最小化されるように、ターゲットコンテナをデプロイするのに適切なホストを選択する。理想的には、ターゲットコンテナによって必要とされるすべてのターゲットライブラリを既にロード済みのホスト215があれば、デプロイメントは非常に効率的になるはずである。
【0033】
図4は、本発明の実施形態によるコンテナ・デプロイメントのための方法400のフローチャートを示す。方法400は、図3に示すようなコンテナマネージャ310によって実装することができる。例えば、コンテナマネージャ310がコンピュータシステム/サーバ12によって実装される実施形態において、方法400を実行するように処理ユニット16を構成することができる。
【0034】
図4に示すように、方法400は、ステップ410において始められ、ここでターゲットコンテナによって必要とされるターゲットライブラリを示す情報が得られる。考察の便宜上、ステップ410で得られる情報を「第1の情報」と称する。第1の情報は、多くの異なる方式で得ることができる。例えば、1つの実施形態において、第1の情報は、ターゲットコンテナについてのプロビジョン要件及び/又は任意の他の構成ファイルから誘導することができる。
【0035】
一例としてDocker技術を考えると、「dockerfile」と呼ばれるファイルは、コンテナをどのように構築するか、及びコンテナが動作しているときに何を実行するかを記述することができる。(注:「dockerfile」という用語は、世界中の様々な管轄権において商標権の対象である場合があり、本明細書においては、このような商標権が存在し得る範囲で標章によって適正に称される製品又はサービスに対して言及する場合にのみ使用される。)図5は、例示的なdockerfile500のスクリーンショットを示す。公知のように、dockerfileは可読であり、アプリケーションソースコードと共に維持可能である。したがって、ターゲットコンテナについてのdockerfileを解析することによって、ロードされることが必要なターゲットライブラリを判定することが可能である。dockerfileは、単なる例であり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。ターゲットライブラリは、ターゲットコンテナに関連する他のいずれかのファイル又はメタデータを解析することによって判定することができる。他の実施形態において、プロビジョン要件の解析に加えて又はその代わりに、ターゲットライブラリは、ユーザによって明示的に指定されるか又は他の任意の方法で得ることができる。
【0036】
さらに図4に示すように、方法400は、ステップ420に進み、ここで複数の候補ホスト215上の1つ又は複数のコンテナに対してロード済みのライブラリを示す情報が得られる。考察の便宜上、ステップ420において得られる情報を「第2の情報」と称する。いくつかの実施形態において、第2の情報は、候補ホスト215の各々から収集することができる。例えば、Dockerシステムにおいて、ひとたびコンテナ及び/又はその構成が変化すると、ホスト215は、メッセージを生成して、「イベントバス」と呼ばれるコンポーネントに送信することができる。メッセージは、ホスト、ホストOS、デプロイ済のコンテナなどの、ハードウェア及び/又はソフトウェア構成に関する情報を含む。コンテナマネージャ310は、このようなメッセージを取得して解析し、候補ホスト215の各々の上に既にロード済みのライブラリを判定することができる。この点に関する例示的な実施形態を以下の段落で論じる。
【0037】
いくつかの実施形態において、第2の情報は、コンテナを候補ホスト215上にデプロイするために使用されるテンプレートの構築履歴を解析することによって得ることができる。引き続きDockerコンテナを例として考えると、候補ホスト215上にコンテナを構築するために使用されるdockerfileは、上述のようにアクセス可能である。これらのdockerfileは、それゆえ候補ホスト215上のコンテナの構築履歴のレコードを維持する。コンテナマネージャ310は、候補ホスト215上に既にロード済みのライブラリを判定するために、これらのdockerfileを取得して解析することができる。
【0038】
候補ホスト215から第2の情報を収集することに加えて又はその代わりに、いくつかの実施形態において、コンテナマネージャ310は、ロードされたライブラリに関する情報をローカルに格納することができる。例えば、ライブラリが候補ホスト215上にロードされるたびに、コンテナマネージャ310は、レコードを更新することができる。そのような実施形態では、ステップ420において、コンテナマネージャ310は、そのローカルレコードにアクセスして、候補ホスト215の各々の上にロード済みのライブラリを判定することができる。他の適切な手法も可能である。
【0039】
ステップ410はステップ420の前に示されているが、これは単に例証を目的とするものであり、本発明の範囲に関するいかなる限定も示唆しないことを理解されたい。第1の情報は、必ずしも第2の情報の前に収集しなければならないわけではない。他の実施形態において、第1及び第2の情報は、逆順に又は並行して得ることができる。
【0040】
次に、ステップ430において、ターゲットコンテナを複数の候補ホスト215上にデプロイするコストが、第1の情報及び第2の情報に基づいて判定される。一般に、ターゲットコンテナを任意の所与の候補ホスト215上にデプロイするコストは、ロードすべきターゲットライブラリと、候補ターゲット機械上にロード済みのライブラリとの間の一致度に少なくとも部分的に基づいて判定される。随意に、1つ又は複数のその他の要因を考慮に入れることができる。図5は、本発明の例示的な実施形態による、所与の候補ホスト215上にターゲットコンテナをデプロイするコストを判定する方法500のフローチャートを示す。方法500は、候補ホスト215の全部又は少なくとも一部に適用することができる。
【0041】
方法500は、ステップ510において始められ、ターゲットライブラリと所与の候補ホスト215上のライブラリとの間の一致度が、第1の情報及び第2の情報に基づいて判定される。本発明の実施形態によれば、あるライブラリと別のライブラリとが互いに機能的に等しい場合、これら2つのライブラリは一致する。すなわち、既存のライブラリをターゲットライブラリとして機能するように再使用することができるのであれば、そのターゲットライブラリは、所与の候補ホスト215上に一致するライブラリを有すると思われる。例えば、ターゲットライブラリが所与の候補ホスト215上に既にロード済みであると判定されたのであれば、一致が見いだされたことになる。別の例として、候補ホスト上の1つ又は複数の既存のライブラリがターゲットライブラリと機能的に等しいか又は類似であれば、同様に一致が見いだされたことになる。ステップ510において、所与の候補ホスト215上に一致するライブラリを有するターゲットライブラリの数を判定することが可能である。
【0042】
いくつかの実施形態において、ステップ520において、各ターゲットライブラリを所与の候補ホストにロードするコストが判定される。異なるライブラリをロードするコストは通常異なることが認識されるであろう。例えば、ある種のライブラリは、ロードするプロセスにおいてより多くのリソース(計算リソース、ストレージリソースなど)を消費する。別の例において、異なるライブラリは、通常異なるサイズを有し、したがって異なるネットワーク帯域幅リソースを消費する。ターゲットライブラリをロードするコストは、そのサイズ、CPU(中央処理ユニット)消費、ストレージ消費及び/又は他の関連要因に基づいて判定することができる。方法400におけるステップ410及び420と同様に、ステップ510及び520の順序は交換することができる。
【0043】
方法500は次にステップ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にロードするコストを表す。
【0044】
あるいは、他の実施形態において、ターゲットコンテナをデプロイするコストは、ステップ530において、個々のライブラリをロードするコストを考慮せずに判定することができる。例えば、場合によっては、異なるライブラリをロードするコストはほぼ同じであると仮定することが合理的である。この点において、ステップ520を省略することができる。従って、ステップ530において、ターゲットコンテナを所与の候補ホスト215上にデプロイするコストは、以下のように計算することができる。
C=M+M...+M
【0045】
引き続き図4を参照すると、いくつかの実施形態において、方法400はステップ440に進み、ここで複数の候補ホスト215の作業負荷を示す情報が得られる。考察の便宜上、ステップ440において得られる情報を「第3の情報」と称する。例として、候補ホスト215の各々について、第3の情報は、プロセッサ使用率、メモリ使用率、ディスク使用率、ネットワーク帯域幅使用率などのうちの1つ又は複数を示すことができる。第3の情報に含まれるメトリックをそれぞれの閾値と比較することによって、各候補ホスト215が重い負担を負っているか否かを判定することができる。
【0046】
次に、ステップ450において、複数の候補ホスト215の中からターゲットホストが選択される。本発明の実施形態によれば、ターゲットホストは、ステップ430において判定されたコストに少なくとも部分的に基づいて選択される。一般に、ターゲットホストは、ターゲットコンテナをデプロイするコストが十分に低くなる(閾値を下回る)ように選択される。詳細には、いくつかの実施形態において、ターゲットコンテナをデプロイするコストを最小化することができる候補ホスト215が、ステップ450においてターゲットホストとして選択される。このようにして、コンテナ/テンプレートの間の従属性の使用によって、ターゲットコンテナを効率的にデプロイすることができる。実験は、コンテナ・デプロイメントによって消費される時間を著しく低減することができることを示す。例えば、従来の手法では5〜10分かかるスクラッチからイメージを構築する作業に対して、本発明の実施形態は、約5秒しか要しない。
【0047】
いくつかの実施形態において、ステップ450においてターゲットホストを選択することは、ステップ440において判定された候補ホスト215の作業負荷に、さらに基づくことができる。例えば、いくつかの実施形態において、その作業負荷が所定の閾値を超える候補ホスト215は、最初に除外される。すなわち、ターゲットホストは、比較的低い作業負荷を有する残りの候補ホストの中から選択される。あるいは、いくつかの実施形態において、ステップ430において判定されたコスト及びステップ440において判定された作業負荷を組み合わせて、ステップ450においてターゲットホストを選択するためのメトリックとして機能させることができる。単なる例として、コストと作業負荷とを乗算して、メトリックとして機能させることができる。その他の任意の適切な方法も可能である。
【0048】
候補ホストの作業負荷を考慮に入れることによって、現時点で過負荷のホスト上にターゲットコンテナをデプロイすることを回避することが可能である。すなわち、ホストのデプロイメントコストと作業負荷との間にはトレードオフが存在する。しかしながら、作業負荷は必ずしも考慮に入れる必要がないことを理解されたい。いくつかの実施形態において、ターゲットホストは、上述のように、判定されたコストのみに基づいて選択することができる。さらに、作業負荷に加えて又はその代わりに、ステップ450において候補ホスト215の他の特性を考慮することができる。特性の例は、性能、セキュリティ、ネットワークドメイン、製造者などを含むがこれらに限定されない。
【0049】
さらに、ときには複数のコンテナをバッチでデプロイすべき場合があることが認識されるであろう。例えば、あるアプリケーションを構築するために、互いに協働する複数のコンテナをデプロイする必要があり得る。この点で、ステップ450において、ターゲットホストは、コンテナを個別に考慮する代わりに、複数のターゲットコンテナの総コストに基づいて選択することができる。例えば、第1のコンテナ及び第2のコンテナがデプロイされるものとする。いくつかの実施形態において、ターゲットホストを別々に選択する代わりに、ターゲットホストは、ステップ450において、第1及び第2のコンテナをデプロイする総コストが所定の閾値を下回るか又は最小化されるように選択することができる。このようにして、全システムの性能を改善することができる。
【0050】
ターゲットコンテナは、ステップ450において選択されたターゲットホスト上にデプロイすることができる。現在公知であるか又は将来開発されるかいずれかの任意の適切な技術を適用して、ターゲットコンテナのデプロイメントを完成させることができる。例えば、選択されたターゲットホストに関する情報及び他のいずれかの関連情報をプロビジョンメタデータとして編成することができる。プロビジョンメタデータは、プロビジョンコマンダに提供されることができ、これが次にコンテナデプロイヤを制御して、選択されたターゲットホストに必要とされるテンプレートを分配する。ターゲットホスト上でテンプレートをインスタンス化することによって、ターゲットコンテナがデプロイされる。
【0051】
詳細には、本発明の実施形態によれば、互いに機能的に関連付けられた2以上のコンテナを2以上の別々のホスト上にデプロイすることができる。すなわち、これらの関連付けられたコンテナは、異なるホストにわたって分配される。例えば、インターネットベースのアプリケーションを構築する際に、いくつかのコンテナをネットワークドメインの外部からアクセス可能なホスト上にデプロイすることができ、その一方で、他のコンテナは、内部データへのアクセスを有する異なるホスト上にデプロイされる。こうした状況に対処するために、いくつかの実施形態において、ブリッジコンポーネントをデプロイして、分配されたコンテナ間のデータ通信を可能にすることができる。1つの実施形態において、ブリッジコンポーネントは、例えば、軽量コンテナとして実装することができる。あるいは、別の実施形態において、ブリッジコンポーネントは、関連付けられたコンテナ間の通信を担当する専用コンポーネントとすることができる。
【0052】
図6は、本発明によるコンテナ・デプロイメントのためのシステム600のブロック図を示す。システム600におけるコンテナは、Dockerコンテナであり、この場合、テンプレートは、上述のように読出し専用イメージである。図示したように、この例において、候補ホスト215...215は、イベントバス605に通信可能に結合する。候補ホスト215...215は、各々、コンテナ/その上にデプロイ済みのイメージに関する情報を収集する。このような情報は、イベントバス605へ伝送されるメッセージ内にカプセル化される。メッセージの伝送は、例えば、候補ホスト215上のなんらかの変化によってトリガされ得る。イベントバス605は、メッセージをインデックスレジストリ610に格納する。インデックスレジストリ610は、ホスト、コンテナ、コンテナエンジン、ソフトウェア/ハードウェア構成などに関連した他の任意の情報をさらに格納する。
【0053】
リソースアナライザ615は、インデックスレジストリ610から情報を取得し、取得した情報を解析することができる。解析の結果は、候補ホストメタデータ620として編成され、これは少なくとも、例えば各候補ホスト215の現在の作業負荷を示す。候補ホストメタデータ620は、コンテナ/イメージ情報コレクタ625へと提供される。いくつかの実施形態において、候補ホストメタデータ620に基づいて、コンテナ/イメージ情報コレクタ625は、その作業負荷が所定の閾値を超える候補ホスト215を除外することができる。残りの候補ホスト215について、コンテナ/イメージ情報コレクタ625は、インデックスレジストリ610から、候補ホスト215上の既存のライブラリ又はレイヤを少なくとも示す第1の情報を収集する。第1の情報は、この例ではコンテナ/イメージ情報630として編成される。
【0054】
図7は、コンテナ/イメージ情報630の一例を示す。図示した例において、コンテナ/イメージ情報630は、拡張マークアップ言語(XML)ファイル700として実装される。コンテナ/イメージ情報630は、2つの候補ホストA及びBに関する情報を収容している。ホストAは、2つのコンテナを有し、ここでコンテナA_aは、4つのレイヤを含み、コンテナA_bは、3つのレイヤを含む。ホストBは、4つのレイヤを含む1つのコンテナB_aを有する。
【0055】
図6に戻ると、コンテナ/イメージ情報630及びプロビジョン要件640の両方がプロビジョンアナライザ640へと提供される。プロビジョン要件640は、デプロイされるターゲットコンテナの要件を示す。いくつかの実施形態において、ターゲットライブラリ/レイヤを示す第2の情報は、プロビジョン要件640から誘導することができる。入力情報に基づいて、プロビジョンアナライザ640は、上述のように、適切なターゲットホスト215を選択することができる。選択されたターゲットホスト215に関する情報は、プロビジョンメタデータ645内に格納することができ、これも図7に示すファイル700と同様にXMLファイルとして実装することができる。
【0056】
プロビジョンメタデータ645は、プロビジョンコマンダ650へと提供される。プロビジョンコマンダ650は、プロビジョンメタデータ645を解釈し、コンテナデプロイヤ655を制御して、選択されたターゲットホスト上にイメージを提供し及びインスタンス化して、ターゲットコンテナをデプロイする。2以上の関連付けられたコンテナが異なるホスト上にデプロイされる場合、プロビジョンコマンダ650は、ブリッジデプロイヤ660を制御してブリッジコンポーネントを構築し、デプロイされたコンテナ間の通信を可能にする。
【0057】
本発明のいくつかの実施形態は、異なるホストOSサーバからの既存のイメージとターゲットとされるプロビジョニング要件との間の従属性解析を通じた効率的なコンテナプロビジョニングを提供するためのシステム及び装置に関する。これは、従来技術と比べて、すべての利用可能なサーバにわたって最小コストを判定してそこにイメージを構築する機構を提供するという独自の利点を有する。
【0058】
本発明のいくつかの実施形態において、ホストサーバ、コンテナ、イメージ及びそれらの下層のレイヤを含むすべてのターゲットとされる環境の情報は、イベントバスに基づくpub/sub機構を通じて、インデックスレジストへと摂取することができる。リソースアナライザを使用して、新たなイメージを動作させるために利用可能な候補ホストを識別する。検査機構に基づいて、各コンテナ又はイメージについての構築履歴の情報をコンテナ/イメージ情報コレクタによって取得することができる。
【0059】
本発明のいくつかの実施形態において、ひとたびユーザが1つの新たなイメージを要求すると、表現されたメタデータを上記の収集されたすべての情報と共に使用して、コンテクストモデルを形成することができる。各アーチファクト(これはコンテクストモデル由来のコンテナ、イメージ、レイヤ、又はホストサーバであり得る)に対して、コスト値が割り当てられる。そして、そのアーチファクトが未だロードされていなければ、そのコストがかかることになる。コスト計算及び比較に基づいて、ターゲットとされるホストサーバの情報を含む最終的なプロビジョニングメタデータを判定することができる。
【0060】
さらに、本発明のいくつかの実施形態において、プロビジョンコマンダは、プロビジョニングメタデータをポピュレートして、最適化されたホストOS選択を行う。ホストOSの選択基準の1つは、ホストOSサーバ横断的なコンテナプロビジョニングを駆動することができる、ホストOSサーバ間のネットワーク通信能力に関する。この状況に従って、ブリッジデプロイヤは、各ホストOSサーバ上に2つのコンテナをプロビジョニングしてそれらを互いに接続することができる。
【0061】
本発明は、システム、装置、デバイス、方法、及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0062】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のものの任意の適切な組合せとすることができるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブル・コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、例えばパンチカード若しくは記録された命令を有する溝内に隆起した構造などの機械式コード化デバイス、及び上記のものの任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で用いられる場合、無線波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバケーブルを通る光パルス)、又は電線を通って伝送される電気信号のようなそれ自体が一時的な信号と解釈すべきではない。
【0063】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることもでき、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク及び/又は無線ネットワークを経由して、外部コンピュータ若しくは外部ストレージデバイスにダウンロードすることもできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体にストレージのために転送する。
【0064】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語及び「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ若しくは複数のプログラミング言語の任意の組合せで記述されたソースコード若しくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェアパッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカルエリアネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が行われる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲートアレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することにより、コンピュータ可読プログラム命令を実行することができる。
【0065】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
【0066】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、その中に格納された命令を有するコンピュータ可読媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。
【0067】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置又は他のデバイス上で行わせてコンピュータ実装のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
【0068】
フローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、断片、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがあることにも留意されたい。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステムによって実装することもでき、又は専用ハードウェアとコンピュータ命令との組合せを実行することもできることにも留意されたい。
【0069】
本発明の種々の実施形態の説明は、例証の目的で提示したものであるが、網羅的であることも、又は開示された実施形態に限定することも意図しない。説明した実施形態の範囲から逸脱することなく、多くの修正及び変形が当業者には明らかであろう。本明細書で用いる用語は、実施形態の原理、実際的な用途、若しくは市場において見いだされる技術に優る技術的改善を最も良く説明するように、又は当業者が本明細書に含まれる実施形態を理解することを可能にするように、選択されたものである。
【符号の説明】
【0070】
18:バス
40:プログラム/ユーティリティ
42:プログラムモジュール
205:テンプレート
210:レジストリ
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2018年3月6日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
デプロイされるターゲットコンテナによって必要とされるターゲットライブラリのセットを示す第1の情報を得ることと、
複数の候補ホスト上にデプロイされた少なくとも1つのコンテナについてロード済みのライブラリのセットを示す第2の情報を得ることと、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットコンテナを前記複数の候補ホスト上にデプロイするコストを判定することと、
前記ターゲットコンテナをデプロイするための前記コストに基づいて、前記複数の候補ホストからターゲットホストを選択することと、
を含む、コンピュータ実装方法。
【請求項2】
第2の情報を得ることは、
前記少なくとも1つのコンテナを前記複数の候補ホスト上にデプロイするために使用されたテンプレートのセットの構築履歴を解析することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ターゲットコンテナをデプロイする前記コストを判定することは、前記複数の候補ホストの中からの所与の候補ホストに対して、
前記第1の情報及び前記第2の情報に少なくとも部分的に基づいて、前記ターゲットライブラリのセットと前記所与の候補ホスト上にロード済みのライブラリのセットとの間の一致度を判定することと、
前記一致度に少なくとも部分的に基づいて、前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定することと、
を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記ターゲットコンテナをデプロイする前記コストを判定することは、前記ターゲットライブラリを前記所与の候補ホストにロードするコストを判定することをさらに含み、
前記ターゲットコンテナを前記所与の候補ホスト上にデプロイする前記コストを判定することは、さらに、前記ターゲットライブラリのセットを前記所与の候補ホストにロードする前記コストに少なくとも部分的に基づく、
請求項3に記載のコンピュータ実装方法。
【請求項5】
前記複数の候補ホストの作業負荷のセットを示す第3の情報を得ることをさらに含み、
ターゲットホストを選択することは、さらに前記第3の情報に少なくとも部分的に基づいて、前記ターゲットホストに対応する前記作業負荷のセットからの作業負荷が所定の閾値を下回るようにする、
請求項1に記載のコンピュータ実装方法。
【請求項6】
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストは、前記複数の候補ホストの中からの第1のホストであり、
前記第1のコンテナを前記第1のホストにデプロイすることと、
前記第1のコンテナに関連付けられた第2のコンテナを、前記第1のホストとは異なる、前記複数の候補ホストからの第2のホストにデプロイすることと、
前記第1のコンテナと前記第2のコンテナとの間でデータを通信するように動作可能なブリッジコンポーネントをデプロイすることと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
第2のコンテナを前記複数の候補ホスト上にデプロイするコストを判定することをさらに含み、
ここで、
前記ターゲットコンテナは、第1のコンテナであり、
前記ターゲットホストを選択することは、前記第1のコンテナをデプロイする前記コスト及び前記第2のコンテナをデプロイする前記コストに少なくとも部分的に基づいて、前記第1のコンテナ及び前記第2のコンテナをデプロイする総コストが所定の閾値を下回るように前記ターゲットホストを選択することを含む、
請求項1に記載のコンピュータ実装方法。
【請求項8】
請求項1〜7の何れか1項に記載の方法の各ステップをハードウェアによる手段として構成した、コンピュータシステム。
【請求項9】
請求項1〜7のいずれか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータプログラム。
【請求項10】
請求項9に記載の前記コンピュータプログラムをコンピュータ可読ストレージ媒体上に格納した、コンピュータ可読ストレージ媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0013
【補正方法】変更
【補正の内容】
【0013】
図1】本発明の実施形態を実装することができる電子デバイスのブロック図である。
図2】本発明の実施形態によるコンテナ・デプロイメントに基づくテンプレートの模式図である。
図3】本発明の実施形態を実装することができる環境のブロック図である。
図4】本発明の実施形態によるコンテナ・デプロイメントのための方法のフローチャートである。
図5】本発明の実施形態によるdockerfileの一例のスクリーンショット、およびターゲットコンテナをデプロイするコストを判定するフローチャートである。
図6】本発明によるコンテナ・デプロイメントのためのシステムのブロック図である。
図7】本発明によるコンテナ/イメージ情報として機能するファイルのスクリーンショットである。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0040
【補正方法】変更
【補正の内容】
【0040】
次に、ステップ430において、ターゲットコンテナを複数の候補ホスト215上にデプロイするコストが、第1の情報及び第2の情報に基づいて判定される。一般に、ターゲットコンテナを任意の所与の候補ホスト215上にデプロイするコストは、ロードすべきターゲットライブラリと、候補ターゲット機械上にロード済みのライブラリとの間の一致度に少なくとも部分的に基づいて判定される。随意に、1つ又は複数のその他の要因を考慮に入れることができる。図5は、本発明の例示的な実施形態による、所与の候補ホスト215上にターゲットコンテナをデプロイするコストを判定する方法505のフローチャートを示す。方法505は、候補ホスト215の全部又は少なくとも一部に適用することができる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0041
【補正方法】変更
【補正の内容】
【0041】
方法505は、ステップ510において始められ、ターゲットライブラリと所与の候補ホスト215上のライブラリとの間の一致度が、第1の情報及び第2の情報に基づいて判定される。本発明の実施形態によれば、あるライブラリと別のライブラリとが互いに機能的に等しい場合、これら2つのライブラリは一致する。すなわち、既存のライブラリをターゲットライブラリとして機能するように再使用することができるのであれば、そのターゲットライブラリは、所与の候補ホスト215上に一致するライブラリを有すると思われる。例えば、ターゲットライブラリが所与の候補ホスト215上に既にロード済みであると判定されたのであれば、一致が見いだされたことになる。別の例として、候補ホスト上の1つ又は複数の既存のライブラリがターゲットライブラリと機能的に等しいか又は類似であれば、同様に一致が見いだされたことになる。ステップ510において、所与の候補ホスト215上に一致するライブラリを有するターゲットライブラリの数を判定することが可能である。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0043
【補正方法】変更
【補正の内容】
【0043】
方法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にロードするコストを表す。
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図5
【補正方法】変更
【補正の内容】
図5
【国際調査報告】