IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 富士通株式会社の特許一覧

特開2024-127665管理プログラム、管理方法、および情報処理装置
<>
  • 特開-管理プログラム、管理方法、および情報処理装置 図1
  • 特開-管理プログラム、管理方法、および情報処理装置 図2
  • 特開-管理プログラム、管理方法、および情報処理装置 図3
  • 特開-管理プログラム、管理方法、および情報処理装置 図4
  • 特開-管理プログラム、管理方法、および情報処理装置 図5
  • 特開-管理プログラム、管理方法、および情報処理装置 図6
  • 特開-管理プログラム、管理方法、および情報処理装置 図7
  • 特開-管理プログラム、管理方法、および情報処理装置 図8
  • 特開-管理プログラム、管理方法、および情報処理装置 図9
  • 特開-管理プログラム、管理方法、および情報処理装置 図10
  • 特開-管理プログラム、管理方法、および情報処理装置 図11
  • 特開-管理プログラム、管理方法、および情報処理装置 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024127665
(43)【公開日】2024-09-20
(54)【発明の名称】管理プログラム、管理方法、および情報処理装置
(51)【国際特許分類】
   G06F 8/65 20180101AFI20240912BHJP
【FI】
G06F8/65
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023037006
(22)【出願日】2023-03-09
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】久保 泰奈
(72)【発明者】
【氏名】大三島 仙知
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA09
5B376EA17
(57)【要約】
【課題】設定ファイルを適切に変更し易くすること。
【解決手段】情報処理装置100は、第1のコンテナのイメージ111を取得する。情報処理装置100は、第2のコンテナのイメージ112を取得する。情報処理装置100は、取得した第1のコンテナのイメージ111に含まれる1以上の要素と、取得した第2のコンテナのイメージ112に含まれる1以上の要素とを比較する。情報処理装置100は、比較した結果に基づいて、取得した第1のコンテナのイメージ111に含まれる1以上の要素と、取得した第2のコンテナのイメージ112に含まれる1以上の要素との間において、相違する要素120を特定する。情報処理装置100は、特定した要素120を表す情報を出力する。
【選択図】図8
【特許請求の範囲】
【請求項1】
第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、
前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、
特定した前記要素を表す情報を出力する、
処理をコンピュータに実行させることを特徴とする管理プログラム。
【請求項2】
前記第2の設定ファイルは、前記第1の設定ファイルに含まれる、前記第1のコンテナのイメージの基礎となるベースイメージを指定するパラメータを変更するよう、前記第1の設定ファイルを変更した後の設定ファイルである、ことを特徴とする請求項1に記載の管理プログラム。
【請求項3】
特定した前記要素を表す情報に基づいて、前記第2の設定ファイルを変更した第3の設定ファイルを生成し、
生成した前記第3の設定ファイルを出力する、
処理を前記コンピュータに実行させ、
前記特定する処理は、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、前記第1のコンテナのイメージに含まれる1以上の要素に包含され、前記第2のコンテナのイメージに含まれる1以上の要素に包含されない第1の要素と、前記第1のコンテナのイメージに含まれる1以上の要素に包含されず、前記第2のコンテナのイメージに含まれる1以上の要素に包含される第2の要素とを特定し、
前記生成する処理は、
特定した前記第1の要素を実装する第1の記述を、前記第2の設定ファイルに追加し、特定した前記第2の要素を削除する第2の記述を、前記第2の設定ファイルに追加するよう、前記第2の設定ファイルを変更した前記第3の設定ファイルを生成する、ことを特徴とする請求項2に記載の管理プログラム。
【請求項4】
取得した前記第1のコンテナのイメージに基づいて実装した前記第1のコンテナにおいて、前記第1のコンテナに実装済みの要素のリストを検索する第1のコマンドを発行することにより、前記第1のコンテナのイメージに含まれる1以上の要素を特定し、
取得した前記第2のコンテナのイメージに基づいて実装した前記第2のコンテナにおいて、前記第2のコンテナに実装済みの要素のリストを検索する第2のコマンドを発行することにより、前記第2のコンテナのイメージに含まれる1以上の要素を特定する、
処理を前記コンピュータに実行させ、
前記相違する要素を特定する処理は、
特定した前記第1のコンテナのイメージに含まれる1以上の要素と、特定した前記第2のコンテナのイメージに含まれる1以上の要素との間において、前記相違する要素を特定する、ことを特徴とする請求項1~3のいずれか一つに記載の管理プログラム。
【請求項5】
第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、
前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、
特定した前記要素を表す情報を出力する、
処理をコンピュータが実行することを特徴とする管理方法。
【請求項6】
第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、
前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、
特定した前記要素を表す情報を出力する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、管理プログラム、管理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、ユーザが作成したDocker(登録商標)ファイルに基づいて、コンテナのイメージを作成する技術がある。Dockerファイルは、例えば、作成するコンテナのイメージの基礎となるベースイメージの指定を含む。Dockerファイルは、例えば、コンテナで利用するパッケージまたはライブラリの指定などを含んでいてもよい。ここで、ユーザが、ベースイメージを変更することを望むことがある。
【0003】
先行技術としては、例えば、コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新が検出された場合、コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量の低減化を図るものがある。また、例えば、コンテナイメージのうち内容が更新された更新レイヤ内の変更部分について、更新前のコンテナイメージとのバイナリ差分を計算してバイナリパッチファイルを作成する技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2019/181860号
【特許文献2】特開2019-28635号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、ベースイメージを変更することに応じて、Dockerファイルを適切に変更することが難しい場合がある。例えば、ユーザは、ベースイメージを変更することに合わせて、コンテナで利用するパッケージまたはライブラリの指定などを、どのように変更することが好ましいのかを判断することができず、Dockerファイルを適切に変更することができない。
【0006】
1つの側面では、本発明は、設定ファイルを適切に変更し易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、特定した前記要素を表す情報を出力する管理プログラム、管理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、設定ファイルを適切に変更し易くすることが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる管理方法の一実施例を示す説明図である。
図2図2は、ファイル管理システム200の一例を示す説明図である。
図3図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4図4は、情報処理装置100の機能的構成例を示すブロック図である。
図5図5は、情報処理装置100の動作の一例を示す説明図(その1)である。
図6図6は、情報処理装置100の動作の一例を示す説明図(その2)である。
図7図7は、情報処理装置100の動作の一例を示す説明図(その3)である。
図8図8は、情報処理装置100の動作の具体例を示す説明図(その1)である。
図9図9は、情報処理装置100の動作の具体例を示す説明図(その2)である。
図10図10は、情報処理装置100の動作の具体例を示す説明図(その3)である。
図11図11は、登録処理手順の一例を示すフローチャートである。
図12図12は、作成処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる管理プログラム、管理方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる管理方法の一実施例)
図1は、実施の形態にかかる管理方法の一実施例を示す説明図である。情報処理装置100は、コンテナを実装可能にするパラメータを示す設定ファイルを適切に変更し易くするためのコンピュータである。コンテナは、実行環境である。設定ファイルは、例えば、Dockerファイルである。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0012】
従来、ユーザが作成したDockerファイルに基づいて、コンテナのイメージを作成することがある。Dockerファイルは、例えば、作成するコンテナのイメージの基礎とするベースイメージを指定するパラメータを含む。Dockerファイルは、例えば、コンテナで利用するパッケージまたはライブラリを指定するパラメータなどを含んでいてもよい。
【0013】
ここで、ユーザが、作成するコンテナのイメージの基礎とするベースイメージを変更することを望むことがある。例えば、ユーザが、作成するコンテナのイメージの基礎とするベースイメージを、いずれかのベースイメージから、当該いずれかのベースイメージとバージョンが異なる別のベースイメージに変更しようと考えることがある。例えば、ユーザが、作成するコンテナのイメージの基礎とするベースイメージを、いずれかのベースイメージから、当該いずれかのベースイメージよりも少ないリソースで実装可能な別のベースイメージに変更しようと考えることがある。
【0014】
しかしながら、作成するコンテナのイメージの基礎とするベースイメージを変更することに応じて、Dockerファイルを適切に変更することが難しい場合がある。
【0015】
例えば、ユーザが、Dockerファイルのうち、作成するコンテナのイメージの基礎とするベースイメージを指定するパラメータを変更することが考えられる。この際、ユーザは、ベースイメージを指定するパラメータを変更することに合わせて、コンテナで利用するパッケージまたはライブラリを指定するパラメータなどを、どのように変更することが好ましいのかを判断することが難しい。例えば、ユーザは、コンテナ上のアプリケーションが正常に動作するよう、コンテナで利用するパッケージまたはライブラリを指定するパラメータなどを、どのように変更することが好ましいのかを判断することが難しい。
【0016】
例えば、変更前のベースイメージに含まれる1以上のパッケージのうち、アプリケーションが動作する際に用いられるいずれかのパッケージが、変更後のベースイメージに含まれる1以上のパッケージに含まれない場合が考えられる。この場合、ユーザは、コンテナ上のアプリケーションが正常に動作するよう、コンテナで利用するパッケージを指定するパラメータを変更することを望むが、パラメータをどのように変更することが好ましいのかを判断することが難しい。
【0017】
例えば、変更前のベースイメージに含まれる1以上のパッケージに含まれず、アプリケーションが動作する際に用いられないパッケージが、変更後のベースイメージに含まれる1以上のパッケージに含まれる場合が考えられる。この場合、ユーザは、作成するコンテナのイメージのサイズの低減化を図るよう、コンテナで利用するパッケージを指定するパラメータを変更することを望むが、パラメータをどのように変更することが好ましいのかを判断することが難しい。
【0018】
従って、ユーザは、Dockerファイルを適切に変更することができないという問題がある。ユーザは、アプリケーションが正常に動作することを保証することが難しいという問題がある。ユーザは、作成するコンテナのイメージのサイズの低減化を図ることが難しいという問題がある。
【0019】
そこで、本実施の形態では、コンテナを実装可能にするパラメータを示す設定ファイルを適切に変更し易くすることができる管理方法について説明する。
【0020】
図1において、第1のコンテナを実装可能にするパラメータを示す第1の設定ファイル101が存在するとする。第1の設定ファイル101は、例えば、作成するコンテナのイメージの基礎とするベースイメージを指定するパラメータを含む。第1の設定ファイル101は、例えば、コンテナで利用するパッケージまたはライブラリを指定するパラメータなどを含んでいてもよい。第1の設定ファイル101は、具体的には、Dockerファイルなどである。少なくとも、第1のコンテナは、所定のアプリケーションを正常に動作可能な環境であるとする。
【0021】
また、第1の設定ファイル101を変更した第2の設定ファイル102が存在するとする。第2の設定ファイル102は、例えば、第1の設定ファイル101のうち、作成するコンテナのイメージの基礎とするベースイメージを指定するパラメータを変更した設定ファイルである。第2の設定ファイル102は、例えば、第2のコンテナを実装可能にするパラメータを示すことになる。第2のコンテナは、例えば、第1のコンテナとは異なるコンテナである。第2のコンテナは、例えば、第1のコンテナと同一のコンテナであってもよい。第2の設定ファイル102は、具体的には、Dockerファイルなどである。第2のコンテナは、所定のアプリケーションを正常に動作可能な環境ではない場合がある。
【0022】
(1-1)情報処理装置100は、第1のコンテナのイメージ111を取得する。第1のコンテナのイメージ111は、例えば、第1の設定ファイル101に基づいて作成される。第1のコンテナのイメージ111は、1以上の要素を含む。要素は、例えば、パッケージまたはライブラリなどである。情報処理装置100は、例えば、第1の設定ファイル101を取得する。情報処理装置100は、例えば、取得した第1の設定ファイル101に基づいて、第1のコンテナのイメージ111を作成することにより、第1のコンテナのイメージ111を取得する。
【0023】
(1-2)情報処理装置100は、第2のコンテナのイメージ112を取得する。第2のコンテナのイメージ112は、例えば、第2の設定ファイル102に基づいて作成される。第2のコンテナのイメージ112は、1以上の要素を含む。要素は、例えば、パッケージまたはライブラリなどである。情報処理装置100は、例えば、第2の設定ファイル102を取得する。情報処理装置100は、例えば、取得した第2の設定ファイル102に基づいて、第2のコンテナのイメージ112を作成することにより、第2のコンテナのイメージ112を取得する。
【0024】
(1-3)情報処理装置100は、取得した第1のコンテナのイメージ111と、取得した第2のコンテナのイメージ112とを比較する。情報処理装置100は、例えば、取得した第1のコンテナのイメージ111に含まれる1以上の要素と、取得した第2のコンテナのイメージ112に含まれる1以上の要素とを比較する。情報処理装置100は、例えば、比較した結果に基づいて、取得した第1のコンテナのイメージ111に含まれる1以上の要素と、取得した第2のコンテナのイメージ112に含まれる1以上の要素との間において、相違する要素120を特定する。
【0025】
相違する要素120は、例えば、第1のコンテナのイメージ111に含まれる1以上の要素に包含され、第2のコンテナのイメージ112に含まれる1以上の要素に包含されない第1の要素121である。相違する要素120は、例えば、第1のコンテナのイメージ111に含まれる1以上の要素に包含されず、第2のコンテナのイメージ112に含まれる1以上の要素に包含される第2の要素122である。
【0026】
これにより、情報処理装置100は、第2のコンテナのイメージ112に含まれる1以上の要素に包含されず、所定のアプリケーションを正常に動作する目的において不足する要素となり得る第1の要素121を特定することができる。
【0027】
また、情報処理装置100は、第1のコンテナのイメージ111に含まれる1以上の要素に包含されず、所定のアプリケーションを正常に動作する目的において拘らない要素となり得る第2の要素122を特定することができる。換言すれば、情報処理装置100は、第2のコンテナのイメージ112に含まれる1以上の要素に包含されなくてもよい余分な要素となり得る第2の要素122を特定することができる。
【0028】
(1-4)情報処理装置100は、特定した要素120を表す情報を出力する。要素120を表す情報は、例えば、要素120のリストである。要素120を表す情報は、例えば、第1の要素121のリストと、第2の要素122のリストとを区別可能に示す情報である。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、他のコンピュータへの送信、または、記憶領域への記憶などである。
【0029】
これにより、情報処理装置100は、第2の設定ファイル102をどのように変更することが好ましいのかを判断可能にする指針となる、要素120を表す情報を出力することができる。情報処理装置100は、第2の設定ファイル102をどのように変更することが好ましいのかを判断可能にする指針となる、要素120を表す情報を利用可能にすることができる。
【0030】
このため、情報処理装置100は、第2の設定ファイル102を適切な内容に変更し易くすることができる。情報処理装置100は、例えば、要素120を表す情報を、利用者が参照可能に出力することができる。情報処理装置100は、例えば、利用者が、第2の設定ファイル102を適切な内容に変更し易くすることができる。
【0031】
情報処理装置100は、例えば、要素120を表す情報を、第2の設定ファイル102を変更する機能を有する他のコンピュータに送信することができる。情報処理装置100は、例えば、他のコンピュータが、第2の設定ファイル102を適切な内容に変更し易くすることができる。
【0032】
(1-5)情報処理装置100は、要素120を表す情報を、記憶領域に記憶しておき、要素120を表す情報に基づいて、第2の設定ファイル102を変更してもよい。情報処理装置100は、例えば、要素120を表す情報に基づいて、第2の設定ファイル102を変更した第3の設定ファイルを生成する。情報処理装置100は、具体的には、第1の要素121を実装する第1の記述を、第2の設定ファイル102に追加し、第2の要素122を削除する第2の記述を、第2の設定ファイル102に追加するよう、第2の設定ファイル102を変更する。
【0033】
これにより、情報処理装置100は、第2の設定ファイル102を適切な内容に変更することができる。情報処理装置100は、例えば、第2の設定ファイル102を、所定のアプリケーションが正常に動作可能な内容に変更することができる。情報処理装置100は、例えば、第2の設定ファイル102を、所定のアプリケーションを正常に動作する目的において拘らない要素を、作成するコンテナのイメージに包含しないよう変更することができる。情報処理装置100は、例えば、作成するコンテナのイメージのサイズの低減化を図ることができる。
【0034】
ここでは、情報処理装置100が、取得した第1の設定ファイル101に基づいて、第1のコンテナのイメージ111を作成する場合について説明したが、これに限らない。例えば、情報処理装置100が、コンテナのイメージを作成する機能を有する他のコンピュータと通信可能な場合があってもよい。この場合、情報処理装置100は、第1の設定ファイル101に基づいて作成された第1のコンテナのイメージ111を、他のコンピュータから受信することにより取得することが考えられる。
【0035】
ここでは、情報処理装置100が、取得した第2の設定ファイル102に基づいて、第2のコンテナのイメージ112を作成する場合について説明したが、これに限らない。例えば、情報処理装置100が、コンテナのイメージを作成する機能を有する他のコンピュータと通信可能な場合があってもよい。この場合、情報処理装置100は、第2の設定ファイル102に基づいて作成された第2のコンテナのイメージ112を、他のコンピュータから受信することにより取得することが考えられる。
【0036】
ここでは、情報処理装置100が、単独で動作する場合について説明したが、これに限らない。例えば、情報処理装置100が、他のコンピュータと協働する場合があってもよい。具体的には、上述したように、情報処理装置100が、第1のコンテナのイメージ111と、第2のコンテナのイメージ112とを、他のコンピュータから受信する場合があってもよい。例えば、複数のコンピュータが、協働で情報処理装置100としての機能を実現する場合があってもよい。具体的には、クラウド上に、情報処理装置100としての機能が実現される場合があってもよい。
【0037】
(ファイル管理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、ファイル管理システム200の一例について説明する。
【0038】
図2は、ファイル管理システム200の一例を示す説明図である。図2において、ファイル管理システム200は、情報処理装置100と、情報蓄積装置201と、クライアント装置202とを含む。
【0039】
ファイル管理システム200において、情報処理装置100と情報蓄積装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。また、情報処理装置100とクライアント装置202とは、有線または無線のネットワーク210を介して接続される。
【0040】
情報処理装置100は、Dockerファイルを変更するためのコンピュータである。情報処理装置100は、1以上のDockerファイルのうち、いずれかのDockerファイルを指定するリクエストを、クライアント装置202から受信し、情報蓄積装置201に送信する。情報処理装置100は、リクエストの指定のDockerファイルを、情報蓄積装置201から受信し、クライアント装置202に送信する。
【0041】
情報処理装置100は、変更前後のDockerファイルの組み合わせを、クライアント装置202から受信する。情報処理装置100は、受信した組み合わせの変更前のDockerファイルに基づいて、変更前のコンテナのイメージをビルドする。情報処理装置100は、受信した組み合わせの変更後のDockerファイルに基づいて、変更後のコンテナのイメージをビルドする。
【0042】
情報処理装置100は、ビルドした変更前のコンテナのイメージと、ビルドした変更後のコンテナのイメージとを比較する。情報処理装置100は、例えば、ビルドした変更前のコンテナのイメージに含まれる1以上の要素と、ビルドした変更後のコンテナのイメージに含まれる1以上の要素とを比較する。情報処理装置100は、例えば、比較した結果に基づいて、ビルドした変更前のコンテナのイメージに含まれる1以上の要素と、ビルドした変更後のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定する。
【0043】
相違する要素は、例えば、変更前のコンテナのイメージに含まれる1以上の要素に包含され、変更後のコンテナのイメージに含まれる1以上の要素に包含されない第1の要素である。相違する要素は、例えば、変更前のコンテナのイメージに含まれる1以上の要素に包含されず、変更後のコンテナのイメージに含まれる1以上の要素に包含される第2の要素である。
【0044】
情報処理装置100は、特定した要素に基づいて、変更後のDockerファイルをさらに変更した新たなDockerファイルを生成する。情報処理装置100は、生成した新たなDockerファイルを、クライアント装置202に送信する。
【0045】
情報処理装置100は、特定した要素を表す情報を、クライアント装置202に送信し、変更後のDockerファイルをさらに変更した新たなDockerファイルを、クライアント装置202から受信してもよい。
【0046】
情報処理装置100は、生成した新たなDockerファイル、または、受信した新たなDockerファイルを、情報蓄積装置201に送信する。情報処理装置100は、例えば、サーバ、または、PCなどである。
【0047】
情報蓄積装置201は、1以上のDockerファイルを記憶するコンピュータである。情報蓄積装置201は、1以上のDockerファイルのうち、いずれかのDockerファイルを指定するリクエストを、情報処理装置100から受信する。情報蓄積装置201は、受信したリクエストに基づいて、指定のDockerファイルを、情報処理装置100に提供する。情報蓄積装置201は、Dockerファイルを、情報処理装置100から受信する。情報蓄積装置201は、受信したDockerファイルを新たに記憶する。情報蓄積装置201は、例えば、サーバ、または、PCなどである。
【0048】
クライアント装置202は、Dockerファイルを変更する作業者によって用いられるコンピュータである。クライアント装置202は、1以上のDockerファイルのうち、いずれかのDockerファイルを指定するリクエストを、情報処理装置100に送信する。クライアント装置202は、指定のDockerファイルを、情報処理装置100から受信し、作業者が参照可能に出力する。
【0049】
クライアント装置202は、作業者の操作入力に基づき、指定のDockerファイルを変更した新たなDockerファイルを生成する。クライアント装置202は、指定のDockerファイルと、生成した新たなDockerファイルとを対応付けた、変更前後のDockerファイルの組み合わせを、情報処理装置100に送信する。
【0050】
クライアント装置202は、要素を表す情報を、情報処理装置100から受信した場合、作業者が参照可能に出力する。クライアント装置202は、作業者の操作入力に基づき、変更後のDockerファイルをさらに変更した新たなDockerファイルを生成し、情報処理装置100に送信する。
【0051】
クライアント装置202は、新たなDockerファイルを、情報処理装置100から受信した場合、受信した新たなDockerファイルを、作業者が参照可能に出力する。クライアント装置202は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0052】
ここでは、情報処理装置100が、情報蓄積装置201とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、情報蓄積装置201としての機能を有し、情報蓄積装置201としても動作する場合があってもよい。
【0053】
ここでは、情報処理装置100が、クライアント装置202とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置202としての機能を有し、クライアント装置202としても動作する場合があってもよい。
【0054】
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0055】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0056】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0057】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0058】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0059】
情報処理装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0060】
(情報蓄積装置201のハードウェア構成例)
情報蓄積装置201のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0061】
(クライアント装置202のハードウェア構成例)
クライアント装置202のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0062】
(情報処理装置100の機能的構成例)
次に、図4を用いて、情報処理装置100の機能的構成例について説明する。
【0063】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、第1特定部402と、第2特定部403と、比較部404と、変更部405と、出力部406とを含む。
【0064】
記憶部400は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0065】
取得部401~出力部406は、制御部の一例として機能する。取得部401~出力部406は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0066】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、例えば、コンテナを実装可能にするパラメータを示す設定ファイルを記憶する。コンテナは、例えば、実行環境である。コンテナは、例えば、アプリケーションを動作可能な実行環境である。設定ファイルは、例えば、作成するコンテナのイメージの基礎とするベースイメージを指定するパラメータを含む。設定ファイルは、例えば、コンテナで利用するパッケージまたはライブラリを指定するパラメータなどを含んでいてもよい。設定ファイルは、例えば、Dockerファイルである。
【0067】
記憶部400は、具体的には、第1のコンテナを実装可能にするパラメータを示す第1の設定ファイルを記憶する。第1のコンテナは、例えば、所定のアプリケーションを正常に動作可能な実行環境である。第1の設定ファイルは、例えば、取得部401によって取得される。
【0068】
記憶部400は、具体的には、第1の設定ファイルを変更した第2の設定ファイルを記憶する。第2の設定ファイルは、例えば、第1のコンテナとは異なる第2のコンテナを実装可能にするパラメータを示す設定ファイルである。第2の設定ファイルは、具体的には、第1の設定ファイルに含まれる、第1のコンテナのイメージの基礎となるベースイメージを指定するパラメータを変更するよう、第1の設定ファイルを変更した後の設定ファイルである。第2の設定ファイルは、具体的には、第1の設定ファイルに含まれる、ベースイメージを指定するパラメータ以外の他のパラメータを変更するよう、第1の設定ファイルを変更した後の設定ファイルであってもよい。第2の設定ファイルは、具体的には、第1の設定ファイルに含まれる複数のパラメータを変更するよう、第1の設定ファイルを変更した後の設定ファイルであってもよい。第2のコンテナは、例えば、所定のアプリケーションを正常に動作可能な実行環境ではない場合がある。第2の設定ファイルは、例えば、取得部401によって取得される。
【0069】
記憶部400は、具体的には、第2の設定ファイルを変更した第3の設定ファイルを記憶する。第3の設定ファイルは、例えば、第2のコンテナとは異なる第3のコンテナを実装可能にするパラメータを示す設定ファイルである。第3の設定ファイルは、例えば、変更部405によって生成される。
【0070】
記憶部400は、例えば、設定ファイルに基づいて作成されたコンテナのイメージを記憶する。コンテナのイメージは、例えば、コンテナの中身を記録する。コンテナのイメージは、例えば、コンテナを作成可能にする指示内容を示す。
【0071】
記憶部400は、具体的には、第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを記憶する。第1のコンテナのイメージは、例えば、取得部401によって取得される。
【0072】
記憶部400は、具体的には、第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを記憶する。第2のコンテナのイメージは、例えば、取得部401によって取得される。
【0073】
記憶部400は、例えば、コンテナのイメージに含まれる1以上の要素のリストを記憶する。要素は、例えば、パッケージまたはライブラリなどである。
【0074】
記憶部400は、具体的には、第1のコンテナのイメージに含まれる1以上の要素を表す第1のリストを記憶する。第1のリストは、例えば、第1特定部402によって特定される。
【0075】
記憶部400は、具体的には、第2のコンテナのイメージに含まれる1以上の要素を表す第2のリストを記憶する。第2のリストは、例えば、第2特定部403によって特定される。
【0076】
記憶部400は、例えば、第1のコンテナのイメージに含まれる1以上の要素と、第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を記憶する。相違する要素は、例えば、第1のコンテナのイメージに含まれる1以上の要素に包含され、第2のコンテナのイメージに含まれる1以上の要素に包含されない第1の要素である。相違する要素は、例えば、第1のコンテナのイメージに含まれる1以上の要素に包含されず、第2のコンテナのイメージに含まれる1以上の要素に包含される第2の要素である。相違する要素は、例えば、比較部404によって特定される。
【0077】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0078】
取得部401は、例えば、コンテナを実装可能にするパラメータを示す設定ファイルを取得する。
【0079】
取得部401は、具体的には、自装置で第1のコンテナのイメージを作成する場合、第1の設定ファイルを取得する。取得部401は、より具体的には、第1の設定ファイルを他のコンピュータから受信することにより、第1の設定ファイルを取得する。取得部401は、より具体的には、利用者の操作入力に基づき、第1の設定ファイルの入力を受け付けることにより、第1の設定ファイルを取得する。取得部401は、具体的には、自装置で第1のコンテナのイメージを作成しない場合、第1の設定ファイルを取得しなくてもよい。
【0080】
取得部401は、具体的には、自装置で第2のコンテナのイメージを作成する場合、第2の設定ファイルを取得する。取得部401は、より具体的には、第2の設定ファイルを他のコンピュータから受信することにより、第2の設定ファイルを取得する。取得部401は、より具体的には、利用者の操作入力に基づき、第2の設定ファイルの入力を受け付けることにより、第2の設定ファイルを取得する。
【0081】
取得部401は、より具体的には、利用者の操作入力に基づき、第1の設定ファイルに対する変更内容の入力を受け付け、当該変更内容に従って、第1の設定ファイルを変更することにより、第1の設定ファイルを変更した第2の設定ファイルを取得する。取得部401は、具体的には、自装置で第2のコンテナのイメージを作成しない場合、第2の設定ファイルを取得しなくてもよい。
【0082】
取得部401は、例えば、コンテナのイメージを取得する。
【0083】
取得部401は、具体的には、第1のコンテナのイメージを取得する。取得部401は、より具体的には、第1の設定ファイルに基づいて、第1のコンテナのイメージを作成することにより、第1のコンテナのイメージを取得する。
【0084】
取得部401は、より具体的には、自装置で第1のコンテナのイメージを作成しない場合、第1のコンテナのイメージを他のコンピュータから受信することにより、第1のコンテナのイメージを取得する。取得部401は、より具体的には、利用者の操作入力に基づき、第1のコンテナのイメージの入力を受け付けることにより、第1のコンテナのイメージを取得する。
【0085】
取得部401は、具体的には、第2のコンテナのイメージを取得する。取得部401は、より具体的には、第2の設定ファイルに基づいて、第2のコンテナのイメージを作成することにより、第2のコンテナのイメージを取得する。
【0086】
取得部401は、より具体的には、自装置で第2のコンテナのイメージを作成しない場合、第2のコンテナのイメージを他のコンピュータから受信することにより、第2のコンテナのイメージを取得する。取得部401は、より具体的には、利用者の操作入力に基づき、第2のコンテナのイメージの入力を受け付けることにより、第2のコンテナのイメージを取得する。
【0087】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。
【0088】
取得部401は、例えば、第1のコンテナのイメージを取得したことを、第1特定部402の処理を開始する開始トリガーとして受け付けてもよい。取得部401は、例えば、第2のコンテナのイメージを取得したことを、第2特定部403の処理を開始する開始トリガーとして受け付けてもよい。取得部401は、例えば、第1特定部402で1以上の要素を特定し、かつ、第2特定部403で1以上の要素を特定したことを、比較部404の処理を開始する開始トリガーとして受け付けてもよい。
【0089】
第1特定部402は、第1のコンテナのイメージに含まれる1以上の要素を特定し、特定した1以上の要素を表す第1のリストを生成する。第1特定部402は、例えば、取得した第1のコンテナのイメージに基づいて実装した第1のコンテナにおいて、第1のコンテナに実装済みの要素のリストを検索する第1のコマンドを発行する。第1特定部402は、例えば、発行した第1のコマンドに応じて、第1のコンテナのイメージに含まれる1以上の要素を特定する。第1特定部402は、例えば、特定した1以上の要素を表す第1のリストを生成する。これにより、第1特定部402は、第1のコンテナのイメージに含まれる1以上の要素と、第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定する指針を得ることができる。
【0090】
第2特定部403は、第2のコンテナのイメージに含まれる1以上の要素を特定し、特定した1以上の要素を表す第2のリストを生成する。第2特定部403は、例えば、取得した第2のコンテナのイメージに基づいて実装した第2のコンテナにおいて、第2のコンテナに実装済みの要素のリストを検索する第2のコマンドを発行する。第2特定部403は、例えば、発行した第2のコマンドに応じて、第2のコンテナのイメージに含まれる1以上の要素を特定する。第2特定部403は、例えば、特定した1以上の要素を表す第2のリストを生成する。これにより、第2特定部403は、第1のコンテナのイメージに含まれる1以上の要素と、第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定する指針を得ることができる。
【0091】
比較部404は、取得した第1のコンテナのイメージと、取得した第2のコンテナのイメージとを比較する。比較部404は、比較した結果に基づいて、取得した第1のコンテナのイメージに含まれる1以上の要素と、取得した第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定する。
【0092】
比較部404は、例えば、第1のリストが表す、第1特定部402で特定した第1のコンテナのイメージに含まれる1以上の要素と、第2のリストが表す、第2特定部403で特定した第2のコンテナのイメージに含まれる1以上の要素とを比較する。比較部404は、例えば、比較した結果に基づいて、第1のコンテナのイメージに含まれる1以上の要素と、第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定する。
【0093】
比較部404は、具体的には、第1のコンテナのイメージに含まれる1以上の要素に包含され、第2のコンテナのイメージに含まれる1以上の要素に包含されない第1の要素を、相違する要素として特定する。比較部404は、具体的には、第1のコンテナのイメージに含まれる1以上の要素に包含されず、第2のコンテナのイメージに含まれる1以上の要素に包含される第2の要素を、相違する要素として特定する。
【0094】
これにより、比較部404は、所定のアプリケーションを正常に動作する目的において不足する要素となり得る第1の要素を特定することができる。比較部404は、第2のコンテナのイメージに含まれる1以上の要素に包含されなくてもよい余分な要素となり得る第2の要素を特定することができる。
【0095】
変更部405は、特定した相違する要素を表す情報に基づいて、第2の設定ファイルを変更した第3の設定ファイルを生成する。変更部405は、例えば、特定した第1の要素を実装する第1の記述を、第2の設定ファイルに追加し、特定した第2の要素を削除する第2の記述を、第2の設定ファイルに追加するよう、第2の設定ファイルを変更した第3の設定ファイルを生成する。これにより、変更部405は、第2の設定ファイルを適切に変更することができ、利用者にかかる作業負担および作業時間の低減化を図ることができる。
【0096】
出力部406は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部406は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0097】
出力部406は、特定した要素を表す情報を出力する。出力部406は、例えば、特定した要素を表す情報を、利用者が参照可能に出力する。出力部406は、例えば、特定した要素を表す情報を、他のコンピュータに送信してもよい。これにより、出力部406は、外部で第2の設定ファイルを適切な内容に変更し易くすることができる。
【0098】
出力部406は、生成した第3の設定ファイルを出力する。出力部406は、例えば、第3の設定ファイルを、利用者が参照可能に出力する。出力部406は、例えば、第3の設定ファイルを、他のコンピュータに送信してもよい。これにより、出力部406は、外部で第3の設定ファイルを利用し易くすることができる。
【0099】
(情報処理装置100の動作の一例)
次に、図5図7を用いて、情報処理装置100の動作の一例について説明する。
【0100】
図5図7は、情報処理装置100の動作の一例を示す説明図である。図5において、クライアント装置202は、利用者の操作入力に基づき、Dockerファイル501を、情報処理装置100に送信する。ここで、図6の説明に移行し、Dockerファイル501の内容について説明する。
【0101】
図6において、情報処理装置100は、Dockerファイル501を取得する。Dockerファイル501は、例えば、作成するコンテナのイメージの基礎となるベースイメージを指定するパラメータを含む。
【0102】
Dockerファイル501は、例えば、コンテナでアプリケーションが利用するパッケージまたはライブラリを指定するパラメータを含む。Dockerファイル501は、具体的には、コンテナでアプリケーションが利用するパッケージまたはライブラリをインストールすることを示すパラメータを含む。
【0103】
Dockerファイル501は、例えば、コンテナ内にアプリケーションのコードをコピーすることを示すパラメータを含む。Dockerファイル501は、例えば、コンテナ内にアプリケーションのバイナリをビルドすることを示すパラメータを含む。
【0104】
ここで、Dockerファイル501のうち、ベースイメージを指定するパラメータを変更することが望まれる場合がある。図5の説明に戻り、クライアント装置202は、利用者の操作入力に基づき、ベースイメージを指定するパラメータを変更したDockerファイル502を、情報処理装置100に送信したとする。
【0105】
情報処理装置100は、Dockerファイル501に基づいて、コンテナのイメージ511をビルドする。情報処理装置100は、Dockerファイル502に基づいて、コンテナのイメージ512をビルドする。情報処理装置100は、ビルドしたコンテナのイメージ511と、ビルドしたコンテナのイメージ512とを比較した結果に基づいて、Dockerファイル502を変更したDockerファイル503を生成する。ここで、図7の説明に移行し、Dockerファイル503を生成する一例について説明する。
【0106】
図7において、情報処理装置100は、Dockerファイル501に基づいてビルドしたコンテナのイメージ511に基づいて、当該イメージ511が表すコンテナをデプロイする。情報処理装置100は、デプロイしたコンテナにおいて、OS(Operating System)レイヤのパッケージまたはライブラリなどの一覧711を出力するコマンドを発行し、一覧711を取得する。情報処理装置100は、デプロイしたコンテナにおいて、アプリケーションレイヤのパッケージまたはライブラリなどの一覧712を出力するコマンドを発行し、一覧712を取得する。情報処理装置100は、取得した一覧711,712をマージしたリスト713を生成する。
【0107】
情報処理装置100は、Dockerファイル502に基づいてビルドしたコンテナのイメージ512に基づいて、当該イメージ512が表すコンテナをデプロイする。情報処理装置100は、デプロイしたコンテナにおいて、OSレイヤのパッケージまたはライブラリなどの一覧721を出力するコマンドを発行し、一覧721を取得する。情報処理装置100は、デプロイしたコンテナにおいて、アプリケーションレイヤのパッケージまたはライブラリなどの一覧722を出力するコマンドを発行し、一覧722を取得する。情報処理装置100は、取得した一覧721,722をマージしたリスト723を生成する。
【0108】
情報処理装置100は、リスト713,723の差分情報を生成し、差分情報を反映するようDockerファイル502を変更した、新たなDockerファイル503を生成する。情報処理装置100は、具体的には、リスト713に存在し、リスト723に存在しない、アプリケーションを動作する際に不足する要素となり得るパッケージ「libssl1.0」をインストールする記述を、Dockerファイル502に対して追加する。情報処理装置100は、具体的には、リスト713に存在せず、リスト723に存在する、アプリケーションを動作する際に余分な要素となり得るパッケージ「serve」を削除する記述を、Dockerファイル502に対して追加する。
【0109】
図5の説明に戻り、情報処理装置100は、生成したDockerファイル503に基づいてビルドしたコンテナのイメージに基づいて、当該イメージが表すコンテナをデプロイする。情報処理装置100は、デプロイしたコンテナ520において、アプリケーションが正常に動作可能であるか否かを確認する。これにより、情報処理装置100は、Dockerファイル502を適切に変更することができる。情報処理装置100は、利用者にかかる作業負担および作業時間などの低減化を図ることができる。
【0110】
(情報処理装置100の動作の具体例)
次に、図8図10を用いて、情報処理装置100の動作の具体例について説明する。
【0111】
図8図10は、情報処理装置100の動作の具体例を示す説明図である。図8において、情報処理装置100は、Dockerイメージ作成システム810と、コンテナデプロイシステム820と、Dockerイメージ比較システム830とを実現する。情報蓄積装置201は、例えば、コンテナレジストリ800を有する。
【0112】
クライアント装置202は、利用者の操作入力に基づき、変更前Dockerファイルを、Dockerイメージ作成システム810に送信し、登録済みであるとする。
【0113】
Dockerイメージ作成システム810は、変更前Dockerファイルに基づいて、変更前Dockerイメージを生成し、コンテナレジストリ800に格納したとする。ここで、変更前Dockerイメージを、コンテナレジストリ800に格納する具体例については、図9を用いて後述する。
【0114】
コンテナデプロイシステム820は、変更前Dockerイメージを、コンテナレジストリ800からダウンロードしたとする。コンテナデプロイシステム820は、ダウンロードした変更前Dockerイメージに基づいて、コンテナ基盤840に、変更前Dockerイメージに対応するコンテナ841をデプロイしたとする。ここで、コンテナ841をデプロイする具体例については、図10を用いて後述する。
【0115】
コンテナデプロイシステム820は、変更前Dockerイメージに対応するコンテナにおいて、パッケージまたはライブラリなどの変更前リストを出力するコマンドを発行し、当該変更前リストを取得したとする。コンテナデプロイシステム820は、取得した変更前リストを、Dockerイメージ比較システム830に送信したとする。Dockerイメージ比較システム830は、変更前リストを記憶する。
【0116】
(8-1)クライアント装置202は、利用者の操作入力に基づき、ベースイメージを指定するパラメータを変更するよう、変更前Dockerファイルを変更した変更後Dockerファイル801を生成する。クライアント装置202は、生成した変更後Dockerファイル801を、Dockerイメージ作成システム810に送信し、登録する。
【0117】
(8-2)Dockerイメージ作成システム810は、変更後Dockerファイル801に基づいて、変更後Dockerイメージ811を生成する。Dockerイメージ作成システム810は、生成した変更後Dockerイメージ811を、コンテナレジストリ800に格納する。ここで、変更後Dockerイメージ811を、コンテナレジストリ800に格納する具体例については、図9を用いて後述する。
【0118】
(8-3)コンテナデプロイシステム820は、変更後Dockerイメージ811を、コンテナレジストリ800からダウンロードする。コンテナデプロイシステム820は、ダウンロードした変更後Dockerイメージ811に基づいて、コンテナ基盤840に、変更後Dockerイメージ811に対応するコンテナ841をデプロイする。コンテナ841をデプロイする具体例については、図10を用いて後述する。
【0119】
(8-4)コンテナデプロイシステム820は、変更後Dockerイメージ811に対応するコンテナ841において、パッケージまたはライブラリなどの変更後リスト822を出力するコマンドを発行し、当該変更後リスト822を取得する。コンテナデプロイシステム820は、取得した変更後リスト822を、Dockerイメージ比較システム830に送信する。
【0120】
(8-5)Dockerイメージ比較システム830は、変更後リスト822と、変更前リストとを比較することにより、差分情報を生成する。差分情報は、例えば、変更後リスト822に包含されず、変更前リストに包含されるパッケージまたはライブラリなどの不足する要素を示す。差分情報は、例えば、変更後リスト822に包含され、変更前リストに包含されないパッケージまたはライブラリなどの余分な要素を示す。
【0121】
(8-6)Dockerイメージ比較システム830は、生成した差分情報を反映するよう、変更後Dockerイメージ811を変更した新規Dockerファイル802を生成する。Dockerイメージ比較システム830は、新規Dockerファイル802を、Dockerイメージ作成システム810に送信し、登録する。
【0122】
(8-7)Dockerイメージ作成システム810は、新規Dockerファイル802に基づいて、新規Dockerイメージ812を生成する。Dockerイメージ作成システム810は、生成した新規Dockerイメージ812を、コンテナレジストリ800に格納する。
【0123】
(8-8)コンテナデプロイシステム820は、新規Dockerイメージ812を、コンテナレジストリ800からダウンロードする。コンテナデプロイシステム820は、ダウンロードした新規Dockerイメージ812に基づいて、コンテナ基盤840に、新規Dockerイメージ812に対応するコンテナ841をデプロイする。
【0124】
コンテナデプロイシステム820は、新規Dockerイメージ812に対応するコンテナ841において、アプリケーションが正常に動作可能であるか否かを確認する。これにより、情報処理装置100は、変更後Dockerファイル801を適切に変更することができる。情報処理装置100は、利用者にかかる作業負担および作業時間の低減化を図ることができる。次に、図9の説明に移行し、Dockerイメージを、コンテナレジストリ800に格納する具体例について説明する。
【0125】
図9において、Dockerイメージ作成システム810は、例えば、生成した変更前Dockerイメージを、変更前Dockerファイル901に対応するタグを付与して、コンテナレジストリ800に格納する。タグは、例えば、変更前Dockerファイル901のうち、ベースイメージを指定するパラメータ、および、アプリケーションを指定するパラメータと、変更前Dockerファイル901の生成日時となどを含む。
【0126】
Dockerイメージ作成システム810は、例えば、生成した変更後Dockerイメージ811を、変更後Dockerファイル801に対応するタグを付与して、コンテナレジストリ800に格納する。タグは、例えば、変更後Dockerファイル801のうち、ベースイメージを指定するパラメータ、および、アプリケーションを指定するパラメータと、変更後Dockerファイル801の生成日時となどを含む。
【0127】
これにより、Dockerイメージ作成システム810は、変更前Dockerファイル901と、変更後Dockerファイル801とを識別し易くすることができる。次に、図10の説明に移行し、コンテナ841をデプロイする具体例について説明する。
【0128】
図10において、コンテナデプロイシステム820は、型化したマニフェストファイルを記憶する。型化したマニフェストファイルは、例えば、specの欄、および、metadateの欄が空であるマニフェストファイルである。
【0129】
コンテナデプロイシステム820は、変更前Dockerファイル901に基づいて、ポート番号などのポート情報1012を取得する。コンテナデプロイシステム820は、取得したポート情報1012と、変更前Dockerイメージに付与したタグ1011を、型化したマニフェストファイルに設定し、変更前マニフェストファイル1031を生成する。コンテナデプロイシステム820は、生成した変更前マニフェストファイル1031に基づいて、コンテナ基盤840に、変更前Dockerイメージに対応するコンテナ841をデプロイする。
【0130】
これにより、コンテナデプロイシステム820は、変更前マニフェストファイル1031を生成し易くすることができ、変更前Dockerイメージに対応するコンテナ841をデプロイし易くすることができる。コンテナデプロイシステム820は、変更前マニフェストファイル1031を参照して、変更前Dockerイメージと、変更前Dockerイメージに対応するコンテナ841との対応関係を識別し易くすることができる。
【0131】
コンテナデプロイシステム820は、変更後Dockerファイル801に基づいて、ポート番号などのポート情報1022を取得する。コンテナデプロイシステム820は、取得したポート情報1022と、変更後Dockerイメージ811に付与したタグ1021を、型化したマニフェストファイルに設定し、変更後マニフェストファイル1032を生成する。コンテナデプロイシステム820は、生成した変更後マニフェストファイル1032に基づいて、コンテナ基盤840に、変更後Dockerイメージ811に対応するコンテナ841をデプロイする。
【0132】
これにより、コンテナデプロイシステム820は、変更後マニフェストファイル1032を生成し易くすることができ、変更後Dockerイメージ811に対応するコンテナ841をデプロイし易くすることができる。コンテナデプロイシステム820は、変更後マニフェストファイル1032を参照して、変更後Dockerイメージ811と、変更後Dockerイメージ811に対応するコンテナ841との対応関係を識別し易くすることができる。
【0133】
(情報処理装置100の適用例)
情報処理装置100は、例えば、コンテナ上で動作するアプリケーションにより所定のサービスを提供する分野に適用することができる。サービスは、例えば、ウェブサイトの運営、画像などの解析処理の提供、検索機能の提供などであってもよい。
【0134】
(登録処理手順)
次に、図11を用いて、情報処理装置100が実行する、登録処理手順の一例について説明する。登録処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0135】
図11は、登録処理手順の一例を示すフローチャートである。図11において、情報処理装置100は、アプリケーションが正常に動作可能なコンテナAに対応するDockerファイルAを、クライアント装置202から受信する(ステップS1101)。
【0136】
次に、情報処理装置100は、受信したDockerファイルAに基づいて、イメージAをビルドし、コンテナレジストリに格納する(ステップS1102)。そして、情報処理装置100は、イメージAを、コンテナレジストリからダウンロードし、当該イメージAが表すコンテナAを実現するリソースを作成し、当該イメージAが表すコンテナAを、コンテナ基盤にデプロイする(ステップS1103)。
【0137】
次に、情報処理装置100は、ビルドしたイメージAの中身を確認し、イメージAの中身を表すリストAを作成する(ステップS1104)。情報処理装置100は、例えば、コンテナAに入り、コマンドを発行してレイヤごとのパッケージまたはライブラリの一覧を取得し、一覧をマージしたリストAを作成する。そして、情報処理装置100は、イメージAが表すコンテナAにおいて、アプリケーションが正常に動作可能であるか否かを確認する(ステップS1105)。その後、情報処理装置100は、登録処理を終了する。
【0138】
(作成処理手順)
次に、図12を用いて、情報処理装置100が実行する、作成処理手順の一例について説明する。作成処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0139】
図12は、作成処理手順の一例を示すフローチャートである。情報処理装置100は、DockerファイルAのうちベースイメージを変更したDockerファイルBを、クライアント装置202から受信する(ステップS1201)。
【0140】
次に、情報処理装置100は、受信したDockerファイルBに基づいて、イメージBをビルドし、コンテナレジストリに格納する(ステップS1202)。そして、情報処理装置100は、イメージBを、コンテナレジストリからダウンロードし、当該イメージBが表すコンテナBを実現するリソースを作成し、当該イメージBが表すコンテナBを、コンテナ基盤にデプロイする(ステップS1203)。
【0141】
次に、情報処理装置100は、ビルドしたイメージBの中身を確認し、イメージBの中身を表すリストBを作成する(ステップS1204)。そして、情報処理装置100は、リストAとリストBとを比較することにより、差分情報を抽出する(ステップS1205)。
【0142】
次に、情報処理装置100は、DockerファイルBに対して抽出した差分情報を反映したDockerファイルCを生成する(ステップS1206)。情報処理装置100は、例えば、差分情報に基づいて、不足するパッケージをインストールする記述、および、余分なパッケージを削除する記述を、DockerファイルBに追加し、DockerファイルCを生成する。そして、情報処理装置100は、生成したDockerファイルCに基づいて、イメージCをビルドし、コンテナレジストリに格納する(ステップS1207)。
【0143】
次に、情報処理装置100は、イメージCを、コンテナレジストリからダウンロードし、当該イメージCが表すコンテナCを実現するリソースを作成し、当該イメージCが表すコンテナCを、コンテナ基盤にデプロイする(ステップS1208)。そして、情報処理装置100は、イメージCが表すコンテナCにおいて、アプリケーションが正常に動作可能であるか否かを確認する(ステップS1209)。その後、情報処理装置100は、作成処理を終了する。
【0144】
以上説明したように、情報処理装置100によれば、第1のコンテナを実装可能にするパラメータを示す第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得することができる。情報処理装置100によれば、第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第1のコンテナとは異なる第2のコンテナのイメージを取得することができる。情報処理装置100によれば、取得した第1のコンテナのイメージに含まれる1以上の要素と、取得した第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定することができる。情報処理装置100によれば、特定した要素を表す情報を出力することができる。これにより、情報処理装置100は、第2の設定ファイルを変更する指針を参照可能にすることができ、第2の設定ファイルを適切に変更し易くすることができる。
【0145】
情報処理装置100によれば、第2の設定ファイルに、第1の設定ファイルに含まれる、第1のコンテナのイメージの基礎となるベースイメージを指定するパラメータを変更するよう、第1の設定ファイルを変更した後の設定ファイルを採用することができる。これにより、情報処理装置100は、ベースイメージを指定するパラメータを変更したことに応じて、第2の設定ファイルを適切に変更し易くすることができる。
【0146】
情報処理装置100によれば、第1のコンテナのイメージに含まれる1以上の要素に包含され、第2のコンテナのイメージに含まれる1以上の要素に包含されない第1の要素を特定することができる。情報処理装置100によれば、第1のコンテナのイメージに含まれる1以上の要素に包含されず、第2のコンテナのイメージに含まれる1以上の要素に包含される第2の要素を特定することができる。情報処理装置100によれば、第1の要素を実装する第1の記述を、第2の設定ファイルに追加し、第2の要素を削除する第2の記述を、第2の設定ファイルに追加するよう、第2の設定ファイルを変更した第3の設定ファイルを生成することができる。情報処理装置100によれば、生成した第3の設定ファイルを出力することができる。これにより、情報処理装置100は、第2の設定ファイルを変更する際に利用者にかかる作業負担および作業時間の低減化を図ることができる。情報処理装置100は、第2の設定ファイルを適切に変更することができる。
【0147】
情報処理装置100によれば、第1のコンテナにおいて、第1のコンテナに実装済みの要素のリストを検索する第1のコマンドを発行することにより、第1のコンテナのイメージに含まれる1以上の要素を特定することができる。情報処理装置100によれば、第2のコンテナにおいて、第2のコンテナに実装済みの要素のリストを検索する第2のコマンドを発行することにより、第2のコンテナのイメージに含まれる1以上の要素を特定することができる。情報処理装置100によれば、特定した第1のコンテナのイメージに含まれる1以上の要素と、特定した第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定することができる。これにより、情報処理装置100は、相違する要素を適切に特定することができる。
【0148】
情報処理装置100によれば、第1の設定ファイルに、Dockerファイルを採用することができる。これにより、情報処理装置100は、Dockerファイルを適切に変更し易くすることができる。
【0149】
なお、本実施の形態で説明した管理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した管理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した管理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0150】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0151】
(付記1)第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、
前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、
特定した前記要素を表す情報を出力する、
処理をコンピュータに実行させることを特徴とする管理プログラム。
【0152】
(付記2)前記第2の設定ファイルは、前記第1の設定ファイルに含まれる、前記第1のコンテナのイメージの基礎となるベースイメージを指定するパラメータを変更するよう、前記第1の設定ファイルを変更した後の設定ファイルである、ことを特徴とする付記1に記載の管理プログラム。
【0153】
(付記3)特定した前記要素を表す情報に基づいて、前記第2の設定ファイルを変更した第3の設定ファイルを生成し、
生成した前記第3の設定ファイルを出力する、
処理を前記コンピュータに実行させ、
前記特定する処理は、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、前記第1のコンテナのイメージに含まれる1以上の要素に包含され、前記第2のコンテナのイメージに含まれる1以上の要素に包含されない第1の要素と、前記第1のコンテナのイメージに含まれる1以上の要素に包含されず、前記第2のコンテナのイメージに含まれる1以上の要素に包含される第2の要素とを特定し、
前記生成する処理は、
特定した前記第1の要素を実装する第1の記述を、前記第2の設定ファイルに追加し、特定した前記第2の要素を削除する第2の記述を、前記第2の設定ファイルに追加するよう、前記第2の設定ファイルを変更した前記第3の設定ファイルを生成する、ことを特徴とする付記2に記載の管理プログラム。
【0154】
(付記4)取得した前記第1のコンテナのイメージに基づいて実装した前記第1のコンテナにおいて、前記第1のコンテナに実装済みの要素のリストを検索する第1のコマンドを発行することにより、前記第1のコンテナのイメージに含まれる1以上の要素を特定し、
取得した前記第2のコンテナのイメージに基づいて実装した前記第2のコンテナにおいて、前記第2のコンテナに実装済みの要素のリストを検索する第2のコマンドを発行することにより、前記第2のコンテナのイメージに含まれる1以上の要素を特定する、
処理を前記コンピュータに実行させ、
前記相違する要素を特定する処理は、
特定した前記第1のコンテナのイメージに含まれる1以上の要素と、特定した前記第2のコンテナのイメージに含まれる1以上の要素との間において、前記相違する要素を特定する、ことを特徴とする付記1~3のいずれか一つに記載の管理プログラム。
【0155】
(付記5)前記第1の設定ファイルは、Dockerファイルである、ことを特徴とする付記1~3のいずれか一つに記載の管理プログラム。
【0156】
(付記6)第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、
前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、
特定した前記要素を表す情報を出力する、
処理をコンピュータが実行することを特徴とする管理方法。
【0157】
(付記7)第1の設定ファイルに基づいて作成された、第1のコンテナのイメージを取得し、
前記第1の設定ファイルを変更した第2の設定ファイルに基づいて作成された、第2のコンテナのイメージを取得し、
取得した前記第1のコンテナのイメージと、取得した前記第2のコンテナのイメージとを比較することにより、取得した前記第1のコンテナのイメージに含まれる1以上の要素と、取得した前記第2のコンテナのイメージに含まれる1以上の要素との間において、相違する要素を特定し、
特定した前記要素を表す情報を出力する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0158】
100 情報処理装置
101 第1の設定ファイル
102 第2の設定ファイル
111,112,511,512 イメージ
120 要素
121 第1の要素
122 第2の要素
200 ファイル管理システム
201 情報蓄積装置
202 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
400 記憶部
401 取得部
402 第1特定部
403 第2特定部
404 比較部
405 変更部
406 出力部
501~503 Dockerファイル
711,712,721,722 一覧
713,723 リスト
800 コンテナレジストリ
801 変更後Dockerファイル
802 新規Dockerファイル
810 Dockerイメージ作成システム
811 変更後Dockerイメージ
812 新規Dockerイメージ
820 コンテナデプロイシステム
822 変更後リスト
830 Dockerイメージ比較システム
840 コンテナ基盤
841 コンテナ
901 変更前Dockerファイル
1011,1021 タグ
1012,1022 ポート情報
1031 変更前マニフェストファイル
1032 変更後マニフェストファイル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12