(57)【要約】【課題】コンテナを容易且つ適切に管理できるようにする。【解決手段】オペレーティングシステム上に構築されるコンテナを管理するホスト計算機３０において、ホスト計算機３０は、プロセッサ３１を備える。プロセッサ３１は、第１コンテナのコンテナイメージに基づいて、第２コンテナを複製し、第１コンテナが使用するハードウェアリソースを、第２コンテナでも使用可能なように設定を行う。ホスト計算機３０の不揮発記憶デバイス３６は、第１コンテナのコンテナイメージと、第１コンテナで使用しているハードウェアリソースとを対応付けたコンテナリソース情報を記憶し、プロセッサ３１は、第１コンテナのコンテナイメージにより第２コンテナを複製する際に、第１コンテナのコンテナイメージに対応付けられているハードウェアリソースを複製して、第２コンテナにより使用可能に設定する。【選択図】図２
2019066985.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム上に構築されるコンテナを管理するコンテナ管理装置であって、
前記リソース管理装置は、プロセッサ部を備え、
前記プロセッサ部は、
第１コンテナのコンテナイメージに基づいて、第２コンテナを複製し、
前記第１コンテナが使用するハードウェアリソースを、前記第２コンテナでも使用可能なように設定を行う
コンテナ管理装置。
【請求項２】
前記第１コンテナのコンテナイメージと、前記第１コンテナで使用しているハードウェアリソースとを対応付けたコンテナリソース情報を記憶する記憶部をさらに有し、
前記プロセッサ部は、
前記第１コンテナのコンテナイメージにより前記第２コンテナを複製する際に、前記第１コンテナのコンテナイメージに対応付けられている前記ハードウェアリソースを複製して、前記第２コンテナにより使用可能に設定する
請求項１に記載のコンテナ管理装置。
【請求項３】
前記ハードウェアリソースは、前記第１コンテナにより利用されるボリュームを含み、
前記プロセッサ部は、
前記ボリュームを複製する
請求項２に記載のコンテナ管理装置。
【請求項４】
前記ボリュームは、データベースのデータが格納されるボリュームである
請求項３に記載のコンテナ管理装置。
【請求項５】
リソース情報には、前記ボリュームを複製するか否かを示す複製可否情報を含み、
前記複製可否情報に基づいて、前記ボリュームを複製するか否かを決定する
請求項３又は請求項４に記載のコンテナ管理装置。
【請求項６】
前記複製可否情報が、前記ボリュームを複製しないことを示す場合に、前記ボリュームを複製せずに、前記第２コンテナが前記ボリュームを直接使用できるように設定する
請求項５に記載のコンテナ管理装置。
【請求項７】
前記プロセッサ部は、
ユーザから第１コンテナに基づいて前記第２コンテナを複製する指定を行う複製コマンドを受け付け、
前記複製コマンドを受けた場合に、前記第２コンテナを複製するとともに、前記ハードウェアリソースを利用可能に設定させる一連の処理を実行する
請求項３から請求項６のいずれか一項に記載のコンテナ管理装置。
【請求項８】
前記プロセッサ部は、
ユーザからコンテナを削除する削除コマンドを受け付け、
前記削除コマンドに対応するコンテナが前記第１コンテナであるか否かを判定し、
前記削除コマンドに対応するコンテナが前記第１コンテナである場合に、前記記憶部から前記第１コンテナの前記コンテナリソース情報を削除せずに、前記コンテナを削除する
請求項３から請求項７のいずれか一項に記載のコンテナ管理装置。
【請求項９】
前記プロセッサ部は、
前記削除コマンドに対応するコンテナが前記第１コンテナである場合に、前記ユーザから前記第１コンテナのコンテナイメージをテンプレートとして使用するか否かの指示を受け付け、
前記ユーザからの指示が、前記第１コンテナのコンテナイメージをテンプレートとして使用する場合には、前記コンテナリソース情報を前記記憶部から削除しない一方、前記第１コンテナのコンテナイメージをテンプレートとして使用しないとの指示である場合には、前記コンテナリソース情報を記憶部から削除する
請求項８に記載のコンテナ管理装置。
【請求項１０】
前記プロセッサ部は、
前記削除コマンドに対応するコンテナが前記第２コンテナであるか否かを判定し、
前記削除コマンドに対応するコンテナが前記第２コンテナである場合に、前記コンテナを削除するとともに、前記第１コンテナのコンテナイメージに対応付けられている前記ハードウェアリソースを複製して使用していたボリュームを削除する
請求項８または請求項９に記載のコンテナ管理装置。
【請求項１１】
オペレーティングシステム上に構築されるコンテナを管理するリソース管理装置によるコンテナ管理方法であって、
第１コンテナのコンテナイメージに基づいて、第２コンテナを複製し、
前記第１コンテナが使用するハードウェアリソースを、前記第２コンテナでも使用可能なように設定を行う
コンテナ管理方法。
【請求項１２】
オペレーティングシステム上に構築されるコンテナを管理するコンテナ管理装置を構成するコンピュータに実行させるためのコンテナ管理プログラムであって、
前記コンピュータに、
第１コンテナのコンテナイメージに基づいて、第２コンテナを複製させ、
前記第１コンテナが使用するハードウェアリソースを、前記第２コンテナでも使用可能なように設定させる
コンテナ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションの実行環境であるコンテナを管理するコンテナ管理装置等に関する。
【背景技術】
【０００２】
アプリケーションの開発から提供までを迅速に行うことを目的としたプログラム開発手法として、ＤｅｖＯｐｓが知られている。ＤｅｖＯｐｓを支える技術として、コンテナ技術が普及している。コンテナ技術とは、ＯＳレイヤを共通とし、アプリケーションレイヤーを仮想化する技術である。コンテナ技術によると、ＯＳを含むハードウェア／デバイスを仮想化するＶＭ（仮想マシン）よりも、迅速且つオーバヘッドを少なく、アプリケーション開発／テスト環境をデプロイすることが可能である。コンテナ技術を実現するコンテナエンジンの代表的な製品としては、Ｄｏｃｋｅｒ  ｉｎｃ（以下、Ｄｏｃｋｅｒ社という）のＤｏｃｋｅｒ（登録商標）があげられる。
【０００３】
ホスト計算機上に構築されたコンテナ上では、共通化されたＯＳ情報との差分だけが管理されている。コンテナが削除された場合には、コンテナ上のデータは保存されない。これを回避するため、Ｄｏｃｋｅｒの機能としては、データボリューム（Ｄａｔａ  Ｖｏｌｕｍｅ）がある。データボリュームをＤｏｃｋｅｒが稼働するホストＯＳ上に作成し、コンテナにマウントし、コンテナからデータボリュームにデータを格納することで、永続的に保存することができる。このデータボリュームは、Ｄｏｃｋｅｒ社から提供されるプラグインを用いて、ストレージ装置上に作成することもできる。
【０００４】
Ｄｏｃｋｅｒにおいて、コンテナをデプロイする際には、Ｄｏｃｋｅｒ  Ｉｍａｇｅが必要である。Ｄｏｃｋｅｒ  Ｉｍａｇｅとは、デプロイに必要なコンテナの環境情報がまとめられたイメージファイルである。Ｄｏｃｋｅｒ  Ｉｍａｇｅとしては、例えば、Ｄｏｃｋｅｒ社から提供されるものと、ユーザが既存のコンテナから作成したものとの２種類がある。ユーザが環境設定したコンテナをイメージ化してＤｏｃｋｅｒ  Ｉｍａｇｅを作成し、そのＤｏｃｋｅｒ  Ｉｍａｇｅから同様な複数の環境のコンテナを瞬時にデプロイすることが可能である。ただし、Ｄｏｃｋｅｒ  Ｉｍａｇｅには、コンテナのハードウェア情報が含まれない。したがって、データボリュームがアタッチされているコンテナからＤｏｃｋｅｒ  Ｉｍａｇｅを作成した際に、このＤｏｃｋｅｒ  Ｉｍａｇｅには、データボリュームの情報が含まれず、コンテナにおけるＯＳ情報からのアプリケーションに関する差分情報のみが含まれていることとなる。
【０００５】
また、最近では、Ｏｒａｃｌｅ  ＣｏｒｐｏｒａｔｉｏｎがＲＤＢＭＳの一例であるＯｒａｃｌｅ（登録商標）  ＤＢの環境用のＤｏｃｋｅｒ  Ｉｍａｇｅの配布を開始し、コンテナ上でのＲＤＢＭＳの利用が普及しつつある。
【０００６】
例えば、コンテナに関する技術としては、仮想ファイルコンテナインスタンスにおけるファイルシステム内のファイルへアクセスを容易にするための技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１７−７６２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
例えば、複数のコンテナ上にデプロイされたＲＤＢＭＳは、同一のデータボリュームを使用することができない。このため、ＲＤＢＭＳがデプロイされたコンテナを複製する際には、データボリュームについても複製する必要がある。
【０００９】
例えば、ＲＤＢＭＳがデプロイされたコンテナを複製する場合には、（１）複製元のコンテナにマウントされていたデータボリュームの複製を作成し、（２）複製元のコンテナからＤｏｃｋｅｒ  Ｉｍａｇｅを作成し、このＤｏｃｋｅｒ  Ｉｍａｇｅから複製先のコンテナをデプロイし、（３）複製先のコンテナに、複製したデータボリュームをアタッチするという３つの作業を管理者が実行する必要がある。このため、ヒューマンエラーの発生や、管理者による作業工数の増加が懸念され、複製するコンテナの数に比例して、ヒューマンエラーの発生の確率が増加するとともに、管理者の作業工数が増大する。
【００１０】
本発明は、上記事情に鑑みなされたものであり、その目的は、コンテナを容易且つ適切に管理することができる技術を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、一観点に係るコンテナ管理装置は、オペレーティングシステム上に構築されるコンテナを管理するコンテナ管理装置であって、リソース管理装置は、プロセッサ部を備え、プロセッサ部は、第１コンテナのコンテナイメージに基づいて、第２コンテナを複製し、第１コンテナが使用するハードウェアリソースを、第２コンテナでも使用可能なように設定を行う。
【発明の効果】
【００１２】
本発明によれば、コンテナを容易且つ適切に管理することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、一実施形態に係る計算機システムの全体構成図である。
【図２】図２は、一実施形態に係るホスト計算機の構成図である。
【図３】図３は、一実施形態に係る不揮発記憶デバイスの構成図である。
【図４】図４は、一実施形態に係るコンテナ永続ボリューム管理テーブルの構成図である。
【図５】図５は、一実施形態に係るストレージボリューム管理テーブルの構成図である。
【図６】図６は、一実施形態に係るストレージ装置の構成図である。
【図７】図７は、一実施形態に係る第１の複製元コンテナ作成メイン処理のフローチャートである。
【図８】図８は、一実施形態に係る第１の複製元コンテナ作成メイン処理によるコンテナ永続ボリューム管理テーブルの状態を説明する図である。
【図９】図９は、一実施形態に係る第２の複製元コンテナ作成メイン処理のフローチャートである。
【図１０】図１０は、一実施形態に係る第２の複製元コンテナ作成メイン処理によるコンテナ永続ボリューム管理テーブルの状態を説明する図である。
【図１１】図１１は、一実施形態に係る第３の複製元コンテナ作成メイン処理のフローチャートである。
【図１２】図１２は、一実施形態に係る第３の複製元コンテナ作成メイン処理によるコンテナ永続ボリューム管理テーブルの状態を説明する図である。
【図１３】図１３は、一実施形態に係る複製元コンテナ作成処理のフローチャートである。
【図１４】図１４は、一実施形態に係る第１の複製先コンテナデプロイ処理のフローチャートである。
【図１５】図１５は、一実施形態に係る第１の複製先コンテナデプロイ処理における各種テーブルの状態を説明する図である。
【図１６】図１６は、一実施形態に係る第２の複製先コンテナデプロイ処理のフローチャートである。
【図１７】図１７は、一実施形態に係る第２の複製先コンテナデプロイ処理における各種テーブルの状態を説明する図である。
【図１８】図１８は、一実施形態に係るコンテナ永続ボリューム複製処理のフローチャートである。
【図１９】図１９は、一実施形態に係るコンテナ削除時ボリューム解放処理のフローチャートである。
【発明を実施するための形態】
【００１４】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１５】
以下の説明では、「ＡＡＡテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ＡＡＡテーブル」を「ＡＡＡ情報」と呼ぶことができる。
【００１６】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサである。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１７】
また、プロセッサが行う処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。プロセッサが実行するプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。
【００１８】
図１は、一実施形態に係る計算機システムの全体構成図である。
【００１９】
計算機システム１は、１以上のクライアント計算機１０と、１以上のホスト計算機３０と、ストレージ装置５０とを備える。クライアント計算機１０と、ホスト計算機３０とは、ネットワークの一例としてのＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）２０を介して接続されている。また、ホスト計算機３０と、ストレージ装置５０とは、ネットワークの一例としてのＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して接続されている。
【００２０】
クライアント計算機１０は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）によって構成され、ホスト計算機３０により提供されるコンテナを管理するための各種コマンド等をユーザから受け付けるために使用されている。ホスト計算機３０は、所定の処理を実行するための１以上のコンテナを構築して提供する。また、ホスト計算機３０は、コンテナを管理する各種処理を実行する。ストレージ装置５０は、各種情報を格納する。ストレージ装置５０は、例えば、コンテナで使用される永続的なボリューム（永続ボリューム）を格納し、ストレージ装置５０内での永続ボリュームの複製等の処理を実行する
【００２１】
図２は、一実施形態に係るホスト計算機の構成図である。
【００２２】
ホスト計算機３０は、制御手段の一例であるプロセッサ３１と、プログラムメモリ３２と、ＬＡＮ通信Ｉ／Ｆ（インターフェース）３３と、入力デバイス３４と、キャッシュメモリ３５と、記憶部の一例としての不揮発記憶デバイス３６と、画像出力デバイス３７と、ＳＡＮ通信Ｉ／Ｆ（インターフェース）３８とを備える。ホスト計算機３０の各構成部（３１〜３８）は、内部バス３９を介して通信可能に接続されている。
【００２３】
プロセッサ３１は、不揮発記憶デバイス３６からプログラムメモリ３２読み出されたプログラムを実行することにより各種処理を実行する。プログラムメモリ３２は、例えば、ＲＡＭ（ＲＡＮＤＯＭ  ＡＣＣＥＳＳ  ＭＥＭＯＲＹ）であり、プロセッサ３１により実行されるプログラムを記憶する。ＬＡＮ通信Ｉ／Ｆ３３は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、ＬＡＮ２０を介して他の装置（例えば、クライアント計算機１０）と通信する。
【００２４】
入力デバイス３４は、例えば、マウス、キーボード等であり、ホスト計算機３０の管理者からの各種入力を受け付ける。キャッシュメモリ３５は、プロセッサ３１が処理に使用するデータ、ストレージ装置５０に書き込むデータや、ストレージ装置５０から読み出したデータ等を一時的に格納する。不揮発記憶デバイス３６は、例えば、ハードディスクやフラッシュメモリなどの情報を比較的長期間に亘って記憶可能な不揮発記憶デバイスであり、プロセッサ３１で実行されるプログラムや、プロセッサ３１の処理に利用される各種データ（例えば、テーブル等）を記憶する。画像出力デバイス３７は、例えば、液晶ディスプレイであり、各種情報を表示出力する。ＳＡＮ通信Ｉ／Ｆ３８は、ＳＡＮ４０を介してストレージ装置５０と通信するためのインターフェースである。
【００２５】
図３は、一実施形態に係る不揮発記憶デバイスの構成図である。
【００２６】
不揮発記憶デバイス３６は、プログラムとして、オペレーティングシステム（ＯＳ）６１と、コンテナ基盤プログラム６２と、複製元コンテナ作成プログラム６５と、複製先コンテナデプロイプログラム６６と、コンテナ削除時ボリューム解放プログラム６７と、コンテナ永続ボリューム複製プログラム６９とを記憶する。オペレーティングシステム６１は、プロセッサ３１により実行されることにより、ホスト計算機３０におけるプログラムの実行を制御する処理等を実行する。コンテナ基盤プログラム６２は、プロセッサ３１により実行されることにより、ＯＳ６１上に構築される１以上のコンテナの基本的な管理処理を実行する。コンテナ基盤プログラム６２は、例えば、Ｄｏｃｋｅｒ（登録商標）  Ｅｎｇｉｎｅのプログラムに基づいて作成することができる。その他のプログラム６５〜７０については、後述する。本実施形態では、コンテナ基盤プログラム６２、複製元コンテナ作成プログラム６５、複製先コンテナデプロイプログラム６６、コンテナ削除時ボリューム解放プログラム６７、及びコンテナ永続ボリューム複製プログラム６９がコンテナ管理プログラムに相当する。なお、コンテナ管理プログラムは、コンテナ基盤プログラム６２、複製元コンテナ作成プログラム６５、複製先コンテナデプロイプログラム６６、コンテナ削除時ボリューム解放プログラム６７、及びコンテナ永続ボリューム複製プログラム６９のうちの一部のプログラムを含んでいなくてもよい。
【００２７】
また、不揮発記憶デバイス３６は、処理に使用するデータとして、コンテナ永続ボリューム管理テーブル６３と、ストレージボリューム管理テーブル６４とを記憶する。コンテナ永続ボリューム管理テーブル６３と、ストレージボリューム管理テーブル６４は、複数のホスト計算機３０から参照される。複製元コンテナ作成プログラム６５、複製先コンテナデプロイプログラム６６、コンテナ削除時ボリューム解放プログラム６７、及びコンテナ永続ボリューム複製プログラム６９は、ネットワークを介して、コンテナ永続ボリューム管理テーブル６３とストレージボリューム管理テーブル６４とを更新する。
【００２８】
図４は、一実施形態に係るコンテナ永続ボリューム管理テーブルの構成図である。
【００２９】
コンテナ永続ボリューム管理テーブル６３は、コンテナで使用されるハードウェアリソースの一例である永続的なボリューム（永続ボリューム）と、コンテナのコンテナイメージとの対応関係を示すコンテナリソース情報の一例であり、各行（レコード）は、コンテナ永続ボリューム名６３ａと、コンテナ名６３ｂと、ディレクトリ名６３ｃと、コピーフラグ６３ｄと、コンテナイメージ名６３ｅと、テンプレートフラグ６３ｆとのフィールドを含む。
【００３０】
コンテナ永続ボリューム名６３ａには、コンテナに使用される永続ボリュームの名前（コンテナ永続ボリューム名）が格納される。コンテナ名６３ｂには、この行に対応する永続ボリューム（この行のコンテナ永続ボリューム名６３ａのコンテナ永続ボリューム名に対応する永続ボリューム）を使用するコンテナの名前（コンテナ名）が格納される。ディレクトリ名６３ｃには、この行に対応する永続ボリュームがマウントされているディレクトリの名前（ディレクトリ名）が格納される。コピーフラグ６３ｄには、この行に対応する永続ボリュームを別のコンテナで使用する際にコピー（複製）する必要があるか否かを示す情報が格納される。本実施形態では、別のコンテナで使用する場合にコピーする必要がある場合には、コピーフラグ６３ｄには、「ｔｒｕｅ」が設定され、別のコンテナで使用する場合にコピーする必要がない場合、例えば、複数のコンテナで共用できる場合には、コピーフラグ６３ｄには、「ｆａｌｓｅ」が設定される。例えば、コンテナ永続ボリュームがＲＤＢＭＳのデータを格納しているボリュームである場合においては、ＲＤＢＭＳのデータの一貫性を保つ必要があれば、コピーフラグ６３ｄにｔｒｕｅを設定しておくようにすればよい。
【００３１】
コンテナイメージ名６３ｅには、この行に対応するコンテナ（この行のコンテナ名６３ｂのコンテナ名に対応するコンテナ）のコンテナイメージの名前（コンテナイメージ名）が格納される。なお、この行に対応するコンテナのコンテナイメージが作成されていない場合には、コンテナイメージ名６３ｅは、空白となっている。テンプレートフラグ６３ｆには、この行に対応するコンテナイメージ（この行のコンテナイメージ名６３ｅのコンテナイメージ名のコンテナイメージ）が他のコンテナをデプロイする際のテンプレートとして使用可能であるか否かを示す情報が格納される。例えば、この行に対応するコンテナイメージがテンプレートとして使用可能である場合には、テンプレートフラグ６３ｆには、「ｔｒｕｅ」が設定され、この行に対応するコンテナイメージがテンプレートとして使用可能でない場合には、「ｆａｌｓｅ」が設定される。
【００３２】
図５は、一実施形態に係るストレージボリューム管理テーブルの構成図である。
【００３３】
ストレージボリューム管理テーブル６４は、永続ボリュームが格納されているストレージ装置５０のＬＤＥＶ（論理デバイス）を管理するテーブルであり、永続ボリューム毎に対応する行（レコード）を格納する。ストレージボリューム管理テーブル６４の行は、ＬＤＥＶ名６４ａと、コンテナ永続ボリューム名６４ｂと、ポート名６４ｃと、ストレージシリアル番号６４ｄとのフィールドを含む。
【００３４】
ＬＤＥＶ名６４ａには、行に対応する永続ボリュームが格納されているＬＤＥＶの名前（ＬＤＥＶ名）が格納される。コンテナ永続ボリューム名６４ｂには、行に対応する永続ボリュームのコンテナ永続ボリューム名が格納される。ポート名６４ｃには、行に対応するＬＤＥＶにアクセスする際に使用するポートの名前（ポート名）が格納される。ストレージシリアル番号６４ｄには、ストレージ装置５０のシリアル番号（ストレージシリアル番号）が格納される。
【００３５】
図６は、一実施形態に係るストレージ装置の構成図である。
【００３６】
ストレージ装置５０は、プロセッサ５１と、プログラムメモリ５２と、ＳＡＮ通信Ｉ／Ｆ５３と、キャッシュメモリ５４と、不揮発記憶デバイス５５と、入力デバイス５６と、画像出力デバイス５７とを備える。ストレージ装置５０の各構成部（５１〜５７）は、内部バス５８を介して通信可能に接続されている。
【００３７】
プロセッサ５１は、不揮発記憶デバイス５５からプログラムメモリ５２に読み出されたプログラムを実行することにより各種処理を実行する。プロセッサ５１が実行する処理としては、ホスト計算機３０から、複製対象のＬＤＥＶ名とポート名とを受け付けて、対応するＬＤＥＶを複製する筐体内コピー処理がある。プログラムメモリ５２は、例えば、ＲＡＭ（ＲＡＮＤＯＭ  ＡＣＣＥＳＳ  ＭＥＭＯＲＹ）であり、プロセッサ５１により実行されるプログラム（筐体内コピー処理を実行するための筐体内コピープログラム等）を記憶する。ＳＡＮ通信Ｉ／Ｆ５３は、ＳＡＮ４０を介してホスト計算機３０と通信するためのインターフェースである。
【００３８】
キャッシュメモリ５４は、プロセッサ５１が処理に使用するデータ、ホスト計算機３０に送信するデータや、ホスト計算機３０から受信したデータ等を一時的に格納する。不揮発記憶デバイス５５は、例えば、ハードディスクやフラッシュメモリなどの情報を比較的長期間に亘って記憶可能な不揮発記憶デバイスであり、プロセッサ５１で実行されるプログラムや、プロセッサ５１の処理に利用される各種データを記憶する。入力デバイス５６は、例えば、マウス、キーボード等であり、ストレージ装置５０の管理者からの各種入力を受け付ける。画像出力デバイス５７は、例えば、液晶ディスプレイであり、各種情報を表示出力する。
【００３９】
次に、計算機システム１における処理動作について説明する。
【００４０】
まず、第１の複製元コンテナ作成メイン処理について説明する。第１の複製元コンテナ
作成メイン処理は、複製元のコンテナ（複製元コンテナ：第１コンテナ）のコンテナイメージを作成し、そのコンテナイメージに関する行をコンテナ永続ボリューム管理テーブル６３に登録するまでの処理である。
【００４１】
図７は、一実施形態に係る第１の複製元コンテナ作成メイン処理のフローチャートである。図８は、一実施形態に係る第１の複製元コンテナ作成メイン処理によるコンテナ永続ボリューム管理テーブルの状態を説明する図である。
【００４２】
コンテナ基盤プログラム６２を実行するプロセッサ３１は、クライアント計算機１０からコンテナ永続ボリュームを作成するとともにコンテナを立ち上げるコマンドを受信すると、まず、コマンドに従ったコンテナ永続ボリュームを作成する（ステップＳ１０）。ここで、クライアント計算機１０から受け取るコマンドとしては、例えば、コンテナ基盤プログラム６２として、Ｄｏｃｋｅｒ  Ｅｎｇｉｎｅに基づいたプログラムを用いている場合には、以下のようなコマンド（１）（２）とすることができる。
【００４３】
−ｄｏｃｋｅｒ  ｖｏｌｕｍｅ  ｃｒｅａｔｅ  （作成ボリューム名）  −ｄｒｉｖｅｒ＝（使用ドライバ名）  −ｏｐｔ  ｃａｐａ＝（ボリューム容量）  ・・・（１）
−ｄｏｃｋｅｒ  ｒｕｎ  −ｖ  （マウントするボリューム名（ここでは、作成ボリューム名））：（コンテナのマウント先）  （指定するコンテナのイメージ名）  ・・・（２）
【００４４】
コマンド（１）は、コマンドで指定したボリューム容量の作成ボリューム名のボリュームを、使用ドライバ名のドライバを用いて作成することを要求するコマンドである。コマンド（２）は、コマンドで指定したボリュームを、指定したコンテナのマウント先にマウントして、コンテナを立ち上げるコマンドである。
【００４５】
次いで、プロセッサ３１は、作成したコンテナ永続ボリュームを、指定されたマウント先にアタッチして、コマンドで指定されたコンテナイメージに基づいて、コンテナ（複製元コンテナ）を立ち上げる（ステップＳ１１）。
【００４６】
次いで、プロセッサ３１は、立ち上げたコンテナに対して、環境変更を行う（ステップＳ１２）。なお、コンテナの環境変更は、予め設定されている環境変更でもよく、クライアント計算機１０からユーザの指定を受け付けて環境変更をおこなってもよい。なお、ステップＳ１２は、必ずしも実行する必要はない。
【００４７】
次いで、プロセッサ３１は、複製元コンテナ作成プログラム６５を実行することにより、複製元コンテナ作成処理（ステップＳ１３：図１３参照）を実行する。なお、複製元コンテナ作成処理においては、作成されたコンテナのコンテナ名と、複製先にマウントされるコンテナ永続ボリューム名（複製元コンテナにアタッチされたコンテナ永続ボリューム名）と、複製元コンテナのコンテナイメージ名と、コピーフラグ（その設定値）とを入力して処理を行う。なお、複製元コンテナ作成処理については、後述する。
【００４８】
この第１の複製元コンテナ作成メイン処理によると、コンテナ永続ボリューム管理テーブル６３は、図８の上図に示す状態から、図８の下図に示す状態となる。すなわち、複製元コンテナにマウントされているコンテナ永続ボリュームのコンテナ永続ボリューム名と、複製元コンテナのコンテナ名と、コンテナ永続ボリュームのマウントされたディレクトリ、コピーフラグの設定値、複製元コンテナのコンテナイメージ名、テンプレートフラグの設定値が設定された行が追加される。
【００４９】
次に、第２の複製元コンテナ作成メイン処理について説明する。第２の複製元コンテナ作成メイン処理は、既に複製元コンテナが立ち上げられ、この複製元コンテナが使用するコンテナ永続ボリュームがコンテナ永続ボリューム管理テーブル６３に登録されている場合において、この複製元コンテナのコンテナイメージをテンプレートとして複製先コンテナを立ち上げ、この複製先コンテナを、次の複製元コンテナとする場合において、この複製元コンテナに対応するコンテナ永続ボリュームをコンテナ永続ボリューム管理テーブル６３に登録するまでの処理である。
【００５０】
図９は、一実施形態に係る第２の複製元コンテナ作成メイン処理のフローチャートである。図１０は、一実施形態に係る第２の複製元コンテナ作成メイン処理によるコンテナ永続ボリューム管理テーブルの状態を説明する図である。
【００５１】
コンテナ基盤プログラム６２を実行するプロセッサ３１は、クライアント計算機１０からコンテナ永続ボリューム管理テーブル６３に管理されているコンテナイメージの指定を含むコマンドを受信すると、指定されたコンテナイメージを使用してコンテナ（複製元コンテナ）を立ち上げる（ステップＳ２１）。
【００５２】
次いで、プロセッサ３１は、立ち上げたコンテナに対して、環境変更を行う（ステップＳ１２）。なお、コンテナの環境変更は、予め設定されている環境変更でもよく、クライアント計算機１０からユーザの指定を受け付けて環境変更をおこなってもよい。なお、ステップＳ１２は、必ずしも実行する必要はない。
【００５３】
次いで、プロセッサ３１は、複製元コンテナ作成プログラム６５を実行することにより、複製元コンテナ作成処理（ステップＳ１３：図１３参照）を実行する。なお、複製元コンテナ作成処理においては、複製元コンテナのコンテナ名と、複製先にマウントされるコンテナ永続ボリューム名（複製元コンテナにアタッチされたコンテナ永続ボリューム名）と、複製元コンテナのコンテナイメージ名と、コピーフラグ（その設定値）とを入力して処理を行う。なお、複製元コンテナ作成処理については、後述する。
【００５４】
ここで、コンテナ永続ボリューム管理テーブル６３に管理されているコンテナイメージを指定して複製されたコンテナに対応する行は、その時点においては、図１０の上図の２番目の行に示すように、コンテナイメージ名６３ｅに空白が設定され、テンプレートフラグ６３ｆがｆａｌｓｅに設定されたものとなっている。なお、図１０の上図の設定が行われる処理については、後述する図１４及び図１６の複製先コンテナデプロイ処理において説明する。
【００５５】
この状態であるときに、第２の複製元コンテナ作成メイン処理が実行されると、コンテナ永続ボリューム管理テーブル６３は、図１０の下図に示す状態となる。すなわち、第２の複製元コンテナ作成メイン処理が実行されると、複製元コンテナのコンテナイメージが作成され、コンテナ永続ボリューム管理テーブル６３の対応する行のコンテナイメージ名６３ｅに作成されたコンテナイメージのコンテナイメージ名が追加されるとともに、テンプレートフラグ６３ｆにテンプレートとして使用可能なことを示すｔｒｕｅが設定される。
【００５６】
次に、第３の複製元コンテナ作成メイン処理について説明する。第３の複製元コンテナ作成メイン処理は、複製元コンテナのコンテナイメージのコンテナイメージ名として指定されたコンテナイメージ名と同じコンテナイメージ名がコンテナ永続ボリューム管理テーブル６３に登録されてしまっている場合において、この複製元コンテナのコンテナイメージをコンテナ永続ボリューム管理テーブル６３に登録するまでの処理である。
【００５７】
図１１は、一実施形態に係る第３の複製元コンテナ作成メイン処理のフローチャートである。図１２は、一実施形態に係る第３の複製元コンテナ作成メイン処理によるコンテナ永続ボリューム管理テーブルの状態を説明する図である。
【００５８】
コンテナ基盤プログラム６２を実行するプロセッサ３１は、クライアント計算機１０からコンテナ永続ボリュームを作成するとともにコンテナを立ち上げるコマンドを受信すると、まず、コマンドに従ったコンテナ永続ボリュームを作成する（ステップＳ３１）。
【００５９】
次いで、プロセッサ３１は、作成したコンテナ永続ボリュームを指定されたマウント先にアタッチして、指定されたコンテナイメージに基づいて、コンテナ（複製元コンテナ）を立ち上げる（ステップＳ３２）。
【００６０】
次いで、プロセッサ３１は、複製元コンテナ作成プログラム６５を実行することにより、複製元コンテナ作成処理（ステップＳ１３−１：図１３参照）を実行する。なお、複製元コンテナ作成処理においては、複製元コンテナのコンテナ名と、複製先にマウントされるコンテナ永続ボリューム名（複製元コンテナにアタッチされたコンテナ永続ボリューム名）と、複製元コンテナのコンテナイメージ名と、コピーフラグ（その設定値）とを入力して処理を行う。
【００６１】
次いで、プロセッサ３１は、立ち上げたコンテナに対して、環境変更を行う（ステップＳ１２）。コンテナの環境変更は、予め設定されている環境変更でもよく、クライアント計算機１０からユーザの指定を受け付けて環境変更をおこなってもよい。なお、ステップＳ１２は、必ずしも実行する必要はない。
【００６２】
次いで、プロセッサ３１は、複製元コンテナ作成プログラム６５を実行することにより、複製元コンテナ作成処理（ステップＳ１３−２：図１３参照）を実行する。なお、複製元コンテナ作成処理においては、複製元コンテナのコンテナ名と、複製先にマウントされるコンテナ永続ボリューム名（複製元コンテナにアタッチされたコンテナ永続ボリューム名）と、複製元コンテナのコンテナイメージ名（ステップＳ１３−１と同じコンテナイメージ名）と、コピーフラグ（その設定値）とを入力して処理を行う。このステップＳ１３−２では、同名のコンテナイメージについて、コンテナ永続ボリューム管理テーブル６３への登録が発生した場合には、プロセッサ３１は、ユーザから、（１）従前のテンプレートを破棄するようにするのか、（２）従前のテンプレートを残し、別名でテンプレートを保存するのかの選択を受け付けて、選択に応じた処理をする。
【００６３】
ここで、ステップＳ１３−１の処理が実行された後においては、コンテナ永続ボリューム管理テーブル６３は、図１２の上図に示すように、複製元コンテナに対応する行が追加されている。この後、ステップＳ１３−２の処理が実行され、この処理において、ユーザにより従前のテンプレートを破棄することが選択されると、コンテナ永続ボリューム管理テーブル６３は、図１２の下図に示すように、従前のコンテナに対応する行がテンプレートから外され（テンプレートフラグ６３ｆがｆａｌｓｅに設定され）、新たな複製元コンテナに対応する行がテンプレートとして（テンプレートフラグ６３ｆがｔｒｕｅに設定され）、追加される。
【００６４】
次に、複製元コンテナ作成処理について詳細に説明する。
【００６５】
図１３は、一実施形態に係る複製元コンテナ作成処理のフローチャートである。
【００６６】
複製元コンテナ作成処理は、図７、図９、図１１のステップＳ１３，ステップＳ１３−１，ステップＳ１３−２に対応する処理であり、プロセッサ３１が複製元コンテナ作成プログラム６５を実行することにより実現される。
【００６７】
複製元コンテナ作成プログラム６５を実行するプロセッサ３１は、指定コンテナイメージ名（入力されたコンテナイメージ名）に対応する行がコンテナ永続ボリューム管理テーブル６３にあるか否かを判定する（ステップＳ４１）。
【００６８】
この結果、指定コンテナイメージ名に対応する行がコンテナ永続ボリューム管理テーブル６３にないと判定された場合（ステップＳ４１：ｎｏ）には、プロセッサ３１は、コンテナ永続ボリューム管理テーブル６３に、テンプレートフラグ（テンプレートフラグ６３ｆの設定値）がｆａｌｓｅであり、コンテナイメージ名（コンテナイメージ名６３ｅの設定値）が空欄である指定コンテナ名に対応する行があるか否かを判定する（ステップＳ４２）。
【００６９】
この結果、テンプレートフラグがｆａｌｓｅであり、コンテナイメージ名が空欄である指定コンテナ名に対応する行がない場合（ステップＳ４２：ｎｏ）には、プロセッサ３１は、指定コンテナ名に対応し、指定コンテナイメージ名を含む行をコンテナ永続ボリューム管理テーブル６３に追加し（ステップＳ４３）、処理をステップＳ４５に進める。具体的には、ステップＳ４３では、プロセッサ３１は、入力されたコンテナ名、複製先にマウントされるコンテナ永続ボリューム名、複製元コンテナのコンテナイメージ名、及びコピーフラグの設定値を含み、テンプレートフラグの設定値をｔｒｕｅとした行をコンテナ永続ボリューム管理テーブル６３に追加する。この際、複製先にマウントされるコンテナ永続ボリュームが複数ある場合には、プロセッサ３１は、コンテナ永続ボリュームのそれぞれに対応する行を追加する。なお、図７に示す第１の複製元コンテナ作成メイン処理のフローチャートに示す場合においては、このステップＳ４３が実行されることとなる。
【００７０】
一方、テンプレートフラグがｆａｌｓｅであり、コンテナイメージ名が空欄である指定コンテナ名に対応する行がある場合（ステップＳ４２：ｙｅｓ）には、プロセッサ３１は、その行（該当行）において、テンプレートフラグの設定値をｔｒｕｅに設定し、指定コンテナイメージ名をコンテナイメージ名６３ｅに設定し、指定コピーフラグをコピーフラグ６３ｄに設定し（ステップＳ４４）、処理をステップＳ４５に進める。なお、図９に示す第２の複製元コンテナ作成メイン処理のフローチャートに示す場合においては、このステップＳ４４が実行されることとなる。
【００７１】
一方、ステップＳ４１において、指定コンテナイメージ名に対応する行がコンテナ永続ボリューム管理テーブル６３にあると判定された場合（ステップＳ４１：ｙｅｓ）には、プロセッサ３１は、クライアント計算機１０又はホスト計算機３０のディスプレイに、上書きの確認メッセージを表示させる（ステップＳ４６）。上書きの確認メッセージは、例えば、「こちらのコンテナイメージ名は既にテンプレートとして使用されていますが、上書きをしてもいいですか？」としてもよい。
【００７２】
次いで、プロセッサ３１は、クライアント計算機１０又はホスト計算機３０のユーザからの上書き確認に対応する応答が、上書き許可であるか否か判定する（ステップＳ４７）。
【００７３】
この結果、応答が上書き許可である場合（ステップＳ４７：ｙｅｓ）には、プロセッサ３１は、該当行のテンプレートフラグをｆａｌｓｅに設定するとともに、指定コンテナイメージ名に対応する新たな行を追加し（ステップＳ４８）、処理をステップＳ４５に進める。具体的には、ステップＳ４８では、プロセッサ３１は、入力されたコンテナ名、複製先にマウントされるコンテナ永続ボリューム名、複製元コンテナのコンテナイメージ名、及びコピーフラグの設定値を含み、テンプレートフラグの設定値をｔｒｕｅとした行をコンテナ永続ボリューム管理テーブル６３に追加する。この際、複製先にマウントされるコンテナ永続ボリュームが複数ある場合には、プロセッサ３１は、コンテナ永続ボリュームのそれぞれに対応する行を追加する。これにより、新しいテンプレートを既に存在しているコンテナイメージ名で登録することができる。
【００７４】
一方、応答が上書き許可でない場合（ステップＳ４７：ｎｏ）には、プロセッサ３１は、クライアント計算機１０又はホスト計算機３０のディスプレイに、再コミット（Ｃｏｍｍｉｔ）を要求するメッセージを表示させ（ステップＳ４９）、処理を終了する。ここで、再コミットを要求するメッセージは、例えば、「Ｃｏｍｍｉｔは行わずに処理を終了します。コンテナイメージ名を別名で指定して、Ｃｏｍｍｉｔをし直してください。」としてもよい。この処理により、既に存在しているコンテナイメージ名に対応するテンプレートが上書きされてしまうことを防止できる。
【００７５】
ステップＳ４５では、プロセッサ３１は、指定コンテナ名のコンテナについて、指定コンテナイメージ名のコンテナイメージを作成して、例えば、不揮発記憶デバイス３６に保存し、処理を終了する。例えば、コンテナイメージを格納するための専用のコンテナを立上げ、そのコンテナを指定してコンテナイメージを格納し、他のホスト計算機３０からアクセスできるようにしてもよい。
【００７６】
次に、第１の複製先コンテナデプロイ処理について説明する。
【００７７】
図１４は、一実施形態に係る第１の複製先コンテナデプロイ処理のフローチャートである。図１５は、一実施形態に係る第１の複製先コンテナデプロイ処理における各種テーブルの状態を説明する図である。
【００７８】
第１の複製先コンテナデプロイ処理は、デプロイする複製先コンテナ（第２コンテナ）を作成するコンテナイメージ（複製元コンテナ（第１コンテナ）のコンテナイメージ）のコンテナイメージ名に基づいて、複製先コンテナのデプロイをする処理である。第１の複製先コンテナデプロイ処理は、プロセッサ３１が、複製先コンテナデプロイプログラム６６を実行することにより実現される。第１の複製先コンテナデプロイ処理は、例えば、プロセッサ３１が、クライアント計算機１０から、複製先コンテナのデプロイに使用するコンテナイメージのコンテナイメージ名を含むコンテナデプロイのコマンドを受信した場合に実行される。
【００７９】
複製先コンテナデプロイプログラム６６を実行するプロセッサ３１は、コンテナデプロイのコマンド（複製コマンド）を受信すると、そのコマンドから複製先コンテナのデプロイに使用するコンテナイメージのコンテナイメージ名を取得する（ステップＳ５１）。次いで、プロセッサ３１は、取得したコンテナイメージ名、テンプレートフラグがｔｒｕｅ、及びコピーフラグがｔｒｕｅをキーとして、コンテナ永続ボリューム管理テーブル６３からコンテナ永続ボリューム名と、ディレクトリ名とを取得する（ステップＳ５２）。このステップにより得られたコンテナ永続ボリューム名のコンテナ永続ボリュームが、複製先コンテナにマウントするために複製すべきボリュームである。このステップＳ５２では、例えば、図１５（Ａ）の太枠に示す行が特定されて、コンテナ永続ボリューム名（複製対象）と、ディレクトリ名とが取得される。
【００８０】
次いで、プロセッサ３１は、ステップＳ５２でコンテナ永続ボリューム名を取得できたか否かを判定し（ステップＳ５３）、コンテナ永続ボリューム名を取得できた場合（ステップＳ５３：ｙｅｓ）には、コンテナ永続ボリュームを複製するコンテナ永続ボリューム複製処理（図１８参照）を実行する（ステップＳ５４）。なお、プロセッサ３１は、複製先永続ボリューム複製処理に対して、取得したコンテナ永続ボリューム名及びディレクトリ名を入力し、複製先のコンテナ永続ボリュームの名前（複製先コンテナ永続ボリューム名）を出力として受け取る。このコンテナ永続ボリューム複製処理が実行されると、ストレージ装置５０では、対応するコンテナ永続ボリュームが複製され、ストレージボリューム管理テーブル６４には、図１５（Ｂ）に示すように、複製されたコンテナ永続ボリュームが登録される。
【００８１】
次いで、プロセッサ３１は、複製先のコンテナ永続ボリュームに対応する行をコンテナ永続ボリューム管理テーブル６３に追加する（ステップＳ５５）。具体的には、プロセッサ３１は、取得した複製先コンテナ永続ボリューム名、複製先のコンテナ名、取得したディレクトリ名、及びコピーフラグの設定値（複製元のコンテナ永続ボリュームの行の設定値と同一）が設定された行を永続ボリューム管理テーブル６３に追加する。なお、プロセッサ３１は、この行のコンテナイメージ名６３ｅを空白とし、テンプレートフラグ６３ｆにｆａｌｓｅを設定する。このステップＳ５５では、コンテナ永続ボリューム管理テーブル６３には、図１５（Ｃ）に示すように、３番目の行が追加される。
【００８２】
次いで、プロセッサ３１は、複製先のコンテナで共用するコンテナ永続ボリュームに対応する行をコンテナ永続ボリューム管理テーブル６３に追加する（ステップＳ５６）。ここで、取得したコンテナイメージ名、テンプレートフラグがｔｒｕｅ、及びコピーフラグがｆａｌｓｅをキーとして、コンテナ永続ボリューム管理テーブル６３から得られる行が、複製元コンテナについてのコンテナ永続ボリュームに関する行であり、この行に対応するコンテナ永続ボリュームは、複製先コンテナで共用して使用される。ステップＳ５６では、同じコンテナ永続ボリュームに対応する複製先コンテナに関する行を追加する。追加する行は、複製元コンテナについてのコンテナ永続ボリュームに関する行の内容に対して、コンテナ名を複製先コンテナ名に代え、コンテナイメージ名を空白とし、テンプレートフラグをｆａｌｓｅとしたものである。このステップＳ５６では、コンテナ永続ボリューム管理テーブル６３には、図１５（Ｄ）に示すように、４番目の行が追加される。
【００８３】
次いで、プロセッサ３１は、複製したコンテナ永続ボリュームと、共用するコンテナ永続ボリュームとをマウントさせて、指定コンテナイメージ名のコンテナイメージを使用して、複製先コンテナを立ち上げ（ステップＳ５７）、処理を終了する。
【００８４】
なお、ステップＳ５３でコンテナ永続ボリューム名を取得できなかった場合（ステップＳ５３：ｎｏ）には、プロセッサ３１は、クライアント計算機１０又はホスト計算機３０のディスプレイに、エラーメッセージを表示させる（ステップＳ５８）。エラーメッセージは、例えば、「指定したコンテナイメージ名を認識できません」としてもよい。
【００８５】
上記処理によると、複製が必要なコンテナ永続ボリュームについては複製したボリュームをマウントさせ、共用できるコンテナ永続ボリュームについては、それをマウントさせた複製先コンテナをデプロイすることができる。
【００８６】
次に、第２の複製先コンテナデプロイ処理について説明する。
【００８７】
図１６は、一実施形態に係る第２の複製先コンテナデプロイ処理のフローチャートである。図１７は、一実施形態に係る第２の複製先コンテナデプロイ処理における各種テーブルの状態を説明する図である。
【００８８】
第２の複製先コンテナデプロイ処理は、デプロイする複製先コンテナを作成するコンテナイメージのコンテナイメージ名と、コピーするコンテナ永続ボリュームをマウントしているコンテナ名（複製元コンテナのコンテナ名）とに基づいて、複製先コンテナのデプロイをする処理である。第２の複製先コンテナデプロイ処理は、プロセッサ３１が、複製先コンテナデプロイプログラム６６を実行することにより実現される。第２の複製先コンテナデプロイ処理は、例えば、プロセッサ３１が、クライアント計算機１０から、複製先コンテナのデプロイに使用するコンテナイメージのコンテナイメージ名と、コピーするコンテナ永続ボリュームをマウントしているコンテナ名とを含むコンテナデプロイのコマンドを受信した場合に実行される。
【００８９】
複製先コンテナデプロイプログラム６６を実行するプロセッサ３１は、コンテナデプロイのコマンド（複製コマンド）を受信すると、そのコマンドから複製先コンテナのデプロイに使用するコンテナイメージのコンテナイメージ名と、コピーするコンテナ永続ボリュームをマウントしているコンテナ名とを取得する（ステップＳ６１）。次いで、プロセッサ３１は、取得したコンテナ名、テンプレートフラグがｔｒｕｅ、及びコピーフラグがｔｒｕｅをキーとして、コンテナ永続ボリューム管理テーブル６３からコンテナ永続ボリューム名と、ディレクトリ名との組をすべて取得する（ステップＳ６２）。このステップにより得られたコンテナ永続ボリューム名のコンテナ永続ボリュームが、複製先コンテナにマウントするために複製すべきボリュームである。このステップでは、例えば、図１７（Ａ）の太枠に示す行が特定されて、コンテナ永続ボリューム名（複製対象）と、ディレクトリ名とが取得される。
【００９０】
次いで、プロセッサ３１は、ステップＳ６２でコンテナ永続ボリューム名を取得できたか否かを判定し（ステップＳ６３）、コンテナ永続ボリューム名を取得できた場合（ステップＳ６３：ｙｅｓ）には、コンテナ永続ボリュームを複製するコンテナ永続ボリューム複製処理（図１８参照）を実行する（ステップＳ５４）。なお、プロセッサ３１は、複製先永続ボリューム複製処理に対して、取得したコンテナ永続ボリューム名及びディレクトリ名を入力し、複製先のコンテナ永続ボリュームの名前（複製先コンテナ永続ボリューム名）を出力として受け取る。このコンテナ永続ボリューム複製処理が実行されると、ストレージ装置５０では、対応するコンテナ永続ボリュームが複製され、ストレージボリューム管理テーブル６４には、図１７（Ｂ）に示すように、複製されたコンテナ永続ボリュームが登録される。
【００９１】
次いで、プロセッサ３１は、複製先のコンテナ永続ボリュームに対応する行をコンテナ永続ボリューム管理テーブル６３に追加する（ステップＳ６５）。具体的には、プロセッサ３１は、取得した複製先コンテナ永続ボリューム名、複製先のコンテナ名、取得したディレクトリ名、及びコピーフラグの設定値（複製元のコンテナ永続ボリュームの行の設定値と同一）が設定された行をコンテナ永続ボリューム管理テーブル６３に追加する。なお、プロセッサ３１は、この行のコンテナイメージ名６３ｅを空白とし、テンプレートフラグ６３ｆにｆａｌｓｅを設定する。このステップＳ６５では、コンテナ永続ボリューム管理テーブル６３には、図１７（Ｃ）に示すように、３番目の行が追加される。
【００９２】
次いで、プロセッサ３１は、複製先のコンテナで共用するコンテナ永続ボリュームに対応する行をコンテナ永続ボリューム管理テーブル６３に追加する（ステップＳ６６）。ここで、取得したコンテナ名、テンプレートフラグがｔｒｕｅ、及びコピーフラグがｆａｌｓｅをキーとして、コンテナ永続ボリューム管理テーブル６３から得られる行が、複製元コンテナについてのコンテナ永続ボリュームに関する行であり、この行に対応するコンテナ永続ボリュームは、複製先コンテナで共用して使用される。ステップＳ６６では、同じコンテナ永続ボリュームに対応する複製先コンテナに関する行を追加する。追加する行は、複製元コンテナについてのコンテナ永続ボリュームに関する行の内容に対して、コンテナ名を複製先コンテナ名に代え、コンテナイメージ名を空白とし、テンプレートフラグをｆａｌｓｅとしたものである。このステップＳ６６では、コンテナ永続ボリューム管理テーブル６３には、図１７（Ｄ）に示すように、４番目の行が追加される。
【００９３】
次いで、プロセッサ３１は、複製したコンテナ永続ボリュームと、共用するコンテナ永続ボリュームとをマウントさせて、指定コンテナイメージ名のコンテナイメージを使用して、複製先コンテナを立ち上げ（ステップＳ６７）、処理を終了する。
【００９４】
なお、ステップＳ６３でコンテナ永続ボリューム名を取得できなかった場合（ステップＳ６３：ｎｏ）には、プロセッサ３１は、クライアント計算機１０又はホスト計算機３０のディスプレイに、エラーメッセージを表示させる（ステップＳ６８）。エラーメッセージは、例えば、「指定したコンテナイメージ名を認識できません」としてもよい。
【００９５】
上記処理によると、複製が必要なコンテナ永続ボリュームについては複製したボリュームをマウントさせ、共用できるコンテナ永続ボリュームについては、それをマウントさせた複製先コンテナをデプロイすることができる。
【００９６】
次に、コンテナ永続ボリューム複製処理について詳細に説明する。
【００９７】
図１８は、一実施形態に係るコンテナ永続ボリューム複製処理のフローチャートである。
【００９８】
コンテナ永続ボリューム複製処理は、図１４、図１６のステップＳ５４に対応する処理であり、プロセッサ３１がコンテナ永続ボリューム複製プログラム６９を実行することにより実現される。
【００９９】
プロセッサ３１は、入力されたコンテナ永続ボリューム名をキーに、ストレージボリューム管理テーブル６４からコンテナ永続ボリュームに対応するストレージ装置５０のＬＤＥＶのＬＤＥＶ名、及そのＬＤＥＶのポート名を取得する（ステップＳ７１）。
【０１００】
次いで、プロセッサ３１は、取得したＬＤＥＶのポート名を指定して、ストレージ装置５０により、ＬＤＥＶの複製を実行させ（ステップＳ７２）、処理をステップＳ７３に進める。なお、ポートの指定については、論理的かつ物理的につながっているポートを用いてボリュームを作成してもよい。
【０１０１】
ステップＳ７３では、プロセッサ３１は、複製したＬＤＥＶに対応する行をストレージボリューム管理テーブル６４に追加する（ステップＳ７３）。なお、行におけるコンテナ永続ボリューム名６４ｂには、プロセッサ３１が所定の基準に従って自動的に生成したコンテナ永続ボリューム名が設定される。
【０１０２】
次いで、プロセッサ３１は、生成したコンテナ永続ボリューム名を返し（ステップＳ７４）、処理を終了する。
【０１０３】
次に、コンテナ削除時ボリューム解放処理について説明する。
【０１０４】
図１９は、一実施形態に係るコンテナ削除時ボリューム解放処理のフローチャートである。
【０１０５】
コンテナ削除時ボリューム解放処理は、プロセッサ３１がコンテナ削除時ボリューム解放プログラム６７を実行することにより実現される。コンテナ削除時ボリューム解放処理は、プロセッサ３１が、クライアント計算機１０から、削除対象のコンテナ名を含むコンテナ削除コマンドを受信した場合に実行される。
【０１０６】
コンテナ削除時ボリューム解放プログラム６７を実行するプロセッサ３１は、クライアント計算機１０から受信したコンテナ削除コマンドから削除対象のコンテナ（対象コンテナという）のコンテナ名（対象コンテナ名という）を取得する（ステップＳ８１）。
【０１０７】
次いで、プロセッサ３１は、コンテナ名をキーとして、コンテナ永続ボリューム管理テーブル６３からコンテナ永続ボリューム名と、テンプレートフラグの設定値とを取得する（ステップＳ８２）。
【０１０８】
次いで、プロセッサ３１は、取得したテンプレートフラグの設定値がｆａｌｓｅであるか否かを判定する（ステップＳ８３）。
【０１０９】
この結果、テンプレートフラグの設定値がｆａｌｓｅである場合（ステップＳ８３：ｙｅｓ）には、このコンテナのコンテナイメージは、テンプレートとして使用可能ではないことを意味しているので、プロセッサ３１は、コンテナ永続ボリューム管理テーブル６３から対象コンテナ名に対応し、コピーフラグの設定値がｔｒｕｅであるすべての行におけるコンテナ永続ボリューム名を取得し、ストレージボリューム管理テーブル６４から取得したコンテナ永続ボリューム名に対応するすべてのＬＤＥＶ名を取得する（ステップＳ８４）。
【０１１０】
次いで、プロセッサ３１は、取得したＬＤＥＶ名に対応するすべてのＬＤＥＶをストレージ装置５０により解放させ、ストレージボリューム管理テーブル６４から取得したＬＤＥＶ名に対応する行をすべて削除する（ステップＳ８５）。
【０１１１】
次いで、プロセッサ３１は、ステップＳ８４で取得したコンテナ永続ボリューム名のコンテナ永続ボリュームを開放し（削除し）、コンテナ永続ボリューム管理テーブル６３から取得したコンテナ永続ボリューム名に対応する行を削除し（ステップＳ８６）、処理をステップＳ９０に進める。
【０１１２】
一方、テンプレートフラグの設定値がｆａｌｓｅでない場合（ステップＳ８３：ｎｏ）には、プロセッサ３１は、削除対象コンテナのコンテナイメージ及びコンテナ永続ボリュームを今後テンプレートとして使用するか否かを判定する（ステップＳ８７）。ここでは、例えば、プロセッサ３１は、クライアント計算機１０のディスプレイに、「このコンテナはテンプレートとして登録されていますが、コンテナ永続ボリュームを含めて削除し、今後テンプレートとして使用しなくてもよろしいですか？」とのメッセージを表示させ、このメッセージに対する応答として、クライアント計算機１０のユーザから今後テンプレートとして使用するか否かの指定を受け付けるようにしてもよい。
【０１１３】
この結果、今後テンプレートとして使用しないと判定した場合（ステップＳ８７：ｎｏ）には、プロセッサ３１は、コンテナ永続ボリューム管理テーブル６３から対象コンテナ名に対応し、コピーフラグの設定値がｔｒｕｅであるすべての行におけるコンテナ永続ボリューム名を取得し、ストレージボリューム管理テーブル６４から取得したコンテナ永続ボリューム名に対応するすべてのＬＤＥＶ名を取得する（ステップＳ８８）。
【０１１４】
次いで、プロセッサ３１は、ストレージ装置５０に取得したＬＤＥＶ名に対応するすべてのＬＤＥＶを解放させ、ストレージボリューム管理テーブル６４から取得したＬＤＥＶ名に対応する行をすべて削除し（ステップＳ８９）、処理をステップＳ９０に進める。
【０１１５】
ステップＳ９０では、プロセッサ３１は、コンテナ永続ボリューム管理テーブル６３から対象コンテナ名に対応し、コピーフラグの設定値がｆａｌｓｅであるすべての行におけるコンテナ永続ボリューム名を取得し、ストレージボリューム管理テーブル６４から取得したコンテナ永続ボリューム名に対応するすべてのＬＤＥＶ名を取得する。
【０１１６】
次いで、プロセッサ３１は、ステップＳ９０で取得したＬＤＥＶ名と同一のＬＤＥＶ名を取得し、コンテナ永続ボリューム管理テーブル６３から対象コンテナ名に対応し、コピーフラグの設定値がｆａｌｓｅであるすべての行を削除する（ステップＳ９１）。
【０１１７】
次いで、プロセッサ３１は、ステップＳ９０で取得したコンテナ永続ボリューム名のコンテナ永続ボリュームが他のコンテナで使用されているか否かを判定する（ステップＳ９２）。具体的には、プロセッサ３１は、コンテナ永続ボリューム管理テーブル６３に、取得したコンテナ永続ボリューム名が設定されている他のコンテナの行があるか否かによって、他のコンテナで使用されているか否かを判定している。
【０１１８】
この結果、取得したコンテナ永続ボリューム名のコンテナ永続ボリュームが他のコンテナで使用されていると判定した場合（ステップＳ９２：ｙｅｓ）には、他のコンテナで使用されることを意味しているので、コンテナ永続ボリュームを削除することなく、処理をステップＳ９６に進める。
【０１１９】
一方、取得したコンテナ永続ボリューム名のコンテナ永続ボリュームが他のコンテナで使用されていないと判定した場合（ステップＳ９２：ｎｏ）には、プロセッサ３１は、取得したＬＤＥＶ名に対応するすべてのＬＤＥＶをストレージ装置５０により解放させ、ストレージボリューム管理テーブル６４から、取得したＬＤＥＶ名に対応する行をすべて削除する（ステップＳ９３）。
【０１２０】
次いで、プロセッサ３１は、取得したコンテナ永続ボリューム名のコンテナ永続ボリュームを開放し（削除し）、コンテナ永続ボリューム管理テーブル６３から取得したコンテナ永続ボリューム名に対応する行を削除し（ステップＳ９４）、処理をステップＳ９６に進める。これにより、他のコンテナで使用されないコンテナ永続ボリュームを適切に開放することができる。
【０１２１】
一方、ステップＳ８７で、今後テンプレートとして使用すると判定した場合（ステップＳ８７：ｙｅｓ）には、プロセッサ３１は、クライアント計算機１０のディスプレイに対象コンテナのコンテナイメージ及びコンテナ永続ボリュームを今後テンプレートとして使用可能であることを示すテンプレート使用可能メッセージを表示させ（ステップＳ９５）、処理をステップＳ９６に進める。なお、テンプレート使用可能メッセージは、「コンテナ永続ボリュームを削除せず、コンテナのみを削除します。今後テンプレートとして使用できます」とのメッセージとしてもよい。
【０１２２】
ステップＳ９６では、プロセッサ３１は、対象コンテナを削除して処理を終了する。
【０１２３】
上記したコンテナ削除時ボリューム解放処理によると、コンテナを削除する際に、コンテナを削除することにより使用されなくなるコンテナ永続ボリュームを適切に削除することができる。
【０１２４】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１２５】
例えば、上記実施形態では、図７に示すように、２つのコマンドにより、ステップＳ１０，ステップＳ１１を実行することにより、コンテナ永続ボリュームを作成し、コンテナ永続ボリュームをアタッチしたコンテナを立ち上げるようにしていたが、本発明はこれに限られず、例えば、コンテナ永続ボリュームを作成し、コンテナ永続ボリュームをアタッチしたコンテナを立ち上げる処理を１つのコマンドにより実行するようにしてもよい。コマンドは、例えば、以下の（３）に示すようにしてもよい。
【０１２６】
−ｄｏｃｋｅｒ  ｒｕｎ  −ｖ  （作成ボリューム名）：（コンテナのマウント先）  −ｄｒｉｖｅｒ＝（ドライバ名）  −ｏｐｔ  ｃａｐａ＝（ボリューム容量）（指定するコンテナのイメージ名）・・・（３）
【０１２７】
このようにすると、１つのコマンドにより、容易に、コンテナ永続ボリュームを作成し、コンテナ永続ボリュームをアタッチしたコンテナを立ち上げることができる。
【０１２８】
また、上記実施形態では、コンテナが使用するハードウェアリソースとして、ボリュームを例に挙げていたが、本発明はこれに限られず、例えば、ポートであってもよい。
【符号の説明】
【０１２９】
１…計算機システム、１０…クライアント計算機、２０…ＬＡＮ、３０…ホスト計算機、３１…プロセッサ、３２…プログラムメモリ、３６…不揮発記憶デバイス、４０…ＳＡＮ、５０…ストレージ装置、６１…オペレーティングシステム、６２…コンテナ基盤プログラム、６３…コンテナ永続ボリューム管理テーブル、６４…ストレージボリューム管理テーブル、６５…複製元コンテナ作成プログラム、６６…複製先コンテナデプロイプログラム、６７…コンテナ削除時ボリューム解放プログラム、６９…コンテナ永続ボリューム複製プログラム
【図１】
2019066985.tif 000003
【図２】
2019066985.tif 000004
【図３】
2019066985.tif 000005
【図４】
2019066985.tif 000006
【図５】
2019066985.tif 000007
【図６】
2019066985.tif 000008
【図７】
2019066985.tif 000009
【図８】
2019066985.tif 000010
【図９】
2019066985.tif 000011
【図１０】
2019066985.tif 000012
【図１１】
2019066985.tif 000013
【図１２】
2019066985.tif 000014
【図１３】
2019066985.tif 000015
【図１４】
2019066985.tif 000016
【図１５】
2019066985.tif 000017
【図１６】
2019066985.tif 000018
【図１７】
2019066985.tif 000019
【図１８】
2019066985.tif 000020
【図１９】
2019066985.tif 000021