(57)【要約】  コンテナを更新するための開示されたコンピュータ実施方法は、（ｉ）スタティックアプリケーションコンテナイメージからインスタンス化されるアプリケーションコンテナを識別することと、（ｉｉ）アプリケーションコンテナ内で実行されているアプリケーションの実行を修正するように設計された補助コードを識別することと、（ｉｉｉ）アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージングすることと、（ｉｖ）アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナを発見することと、（ｖ）アプリケーションコンテナによって、少なくとも部分的に、補助コードを収容するデータボリュームコンテナの位置へのポインタを用いて、アプリケーションコンテナをインスタンス化することによって、スタティックアプリケーションコンテナイメージを修正することなく、補助コードを有するアプリケーションコンテナ内で実行されているアプリケーションの実行を修正することと、を含んでもよい。様々な別の方法、システム、及びコンピュータ可読媒体もまた開示される。
2021509200.tif 000002
【特許請求の範囲】
【請求項１】
コンテナを更新するためのコンピュータ実施方法であって、前記方法の少なくとも一部は、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法は、
スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の前記他のソフトウェアから分離する、前記アプリケーションコンテナを識別することと、
前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正するように設計された補助コードを識別することと、
前記アプリケーションコンテナをホストする前記ホストシステムに配布されるデータボリュームコンテナイメージに、前記補助コードをパッケージ化することと、
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見することと、
前記アプリケーションコンテナによって、少なくとも部分的に、前記補助コードを収容する前記データボリュームコンテナの前記位置への前記ポインタを用いて、前記アプリケーションコンテナをインスタンス化することによって、前記スタティックアプリケーションコンテナイメージを修正することなく、前記補助コードを有する前記アプリケーションコンテナ内で実行されている前記アプリケーションの前記実行を修正することと、
を含むコンピュータ実施方法。
【請求項２】
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを発見することが、
前記スタティックアプリケーションコンテナイメージの作成において、前記アプリケーションコンテナが前記スタティックアプリケーションコンテナイメージからインスタンス化される際、新しい補助コードをスキャンするスクリプトと共に前記スタティックアプリケーションコンテナイメージを構成することと、
前記スクリプトを実行している前記アプリケーションコンテナによって、前記データボリュームコンテナの前記位置への前記ポインタを発見することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記新しい補助コードをスキャンする前記スクリプトと共に前記スタティックアプリケーションコンテナイメージを構成することが、所定のディレクトリをスキャンするように前記スクリプトを構成することを含み、
前記アプリケーションコンテナをホストする前記ホストシステムに配布される前記データボリュームコンテナイメージに、前記補助コードをパッケージ化することが、前記ホストシステム上の前記所定のディレクトリ内に、前記データボリュームコンテナをインスタンス化するように前記データボリュームコンテナイメージを構成することを含み、
前記スクリプトによって、前記補助コードを発見することが、前記所定のディレクトリ内の前記データボリュームコンテナを発見することを含む、請求項１に記載のコンピュータ実施方法。
【請求項４】
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを発見することが、
コンテナプラットフォームによる前記アプリケーションコンテナのインスタンス化の際に、新しい補助データをスキャンするスクリプトと共に前記ホストシステム上の前記アプリケーションコンテナをインスタンス化する前記コンテナプラットフォームを構成することと、
前記アプリケーションコンテナをインスタンス化する間、前記スクリプトを実行している前記コンテナプラットフォームによって、前記データボリュームコンテナの前記位置を発見することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項５】
前記補助コードを収容する前記データボリュームコンテナの前記位置への前記ポインタを用いて、前記アプリケーションコンテナをインスタンス化することが、前記アプリケーションコンテナを再スタートすることを含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
追加の補助コードを収容する新しいデータボリュームコンテナの位置への追加のポインタを用いて、前記アプリケーションコンテナを再スタートさせることと、
前記アプリケーションコンテナによって、前記新しいデータボリュームコンテナの前記位置を発見することと、
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置を自動的に再発見することと、
前記アプリケーションコンテナによって、前記補助コード及び前記追加の補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正することと、
を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項７】
前記補助コードが、前記アプリケーションコンテナ内で実行されている前記アプリケーションへのプラグインを含む、請求項１に記載のコンピュータ実施方法。
【請求項８】
前記補助コードが、前記アプリケーションコンテナ内で実行されている前記アプリケーションへのパッチを含む、請求項１に記載のコンピュータ実施方法。
【請求項９】
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置を発見することは、前記ホストシステム上の前記データボリュームコンテナの前記位置と前記ホストシステム上の新しい位置との間にシンボリックリンクを作成することを含む、請求項１に記載のコンピュータ実施方法。
【請求項１０】
前記アプリケーションの第１のインスタンスをホストする第１のアプリケーションコンテナと、前記アプリケーションの第２のインスタンスをホストする第２のアプリケーションコンテナとを識別することと、
前記アプリケーションの前記実行を修正するように設計された追加の補助コードを識別することと、
前記追加の補助コードを追加のデータボリュームコンテナイメージにパッケージングすることと、
前記第１のアプリケーションコンテナによって、前記追加のデータボリュームコンテナイメージからインスタンス化された追加のデータボリュームコンテナの位置へのポインタを発見することと、
前記第１のアプリケーションコンテナによって、前記補助コードではなく前記追加の補助コードを用いて、前記第１のアプリケーションコンテナ内で実行されている前記アプリケーションの前記第１のインスタンスの前記実行を修正することと、
前記第２のアプリケーションコンテナによって、前記追加の補助コードではなく前記補助コードを用いて、前記第２のアプリケーションコンテナ内で実行されている前記アプリケーションの前記第２のインスタンスの前記実行を修正することと、
を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項１１】
前記アプリケーションコンテナによって、前記補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの前記実行を修正することが、
前記アプリケーションコンテナによって、前記データボリュームコンテナ内のデータボリューム内にインストールスクリプトを配置することと、
前記インストールスクリプトを実行することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項１２】
コンテナを更新するためのシステムであって、前記システムは、
メモリに記憶された識別モジュールであって、
スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の前記他のソフトウェアから分離する、前記アプリケーションコンテナを識別し、
前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正するように設計された補助コードを識別する、識別モジュールと、
メモリに記憶されたパッケージ化モジュールであって、前記アプリケーションコンテナをホストする前記ホストシステムに配布されるデータボリュームコンテナイメージに、前記補助コードをパッケージ化する、パッケージ化モジュールと、
メモリに記憶された発見モジュールであって、前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見する、発見モジュールと、
メモリに記憶された修正モジュールであって、前記アプリケーションコンテナによって、少なくとも部分的に、前記補助コードを収容する前記データボリュームコンテナの前記位置に、前記ポインタを用いて前記アプリケーションコンテナをインスタンス化することによって、前記スタティックアプリケーションコンテナイメージを修正することなく、前記補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの前記実行を修正する、修正モジュールと、
前記識別モジュール、前記パッケージ化モジュール、前記発見モジュール、及び前記修正モジュールを実行する、少なくとも１つの物理プロセッサと、
を備える、システム。
【請求項１３】
前記発見モジュールが、前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを、
前記スタティックアプリケーションコンテナイメージの作成において、前記アプリケーションコンテナが前記スタティックアプリケーションコンテナイメージからインスタンス化される際、新しい補助コードをスキャンするスクリプトと共に前記スタティックアプリケーションコンテナイメージを構成することと、
前記スクリプトを実行している前記アプリケーションコンテナによって、前記データボリュームコンテナの前記位置を発見すること、
によって発見する、請求項１２に記載のシステム。
【請求項１４】
前記発見モジュールが、
所定のディレクトリをスキャンするように前記スクリプトを構成することによって、前記新しい補助コードをスキャンする前記スクリプトと共に前記スタティックアプリケーションコンテナイメージを構成し、
前記ホストシステム上の前記所定のディレクトリ内に、前記データボリュームコンテナをインスタンス化するように前記データボリュームコンテナイメージを構成することによって、前記アプリケーションコンテナをホストする前記ホストシステムに配布される前記データボリュームコンテナイメージに、前記補助コードをパッケージ化し、
前記スクリプトによって、前記所定のディレクトリ内の前記データボリュームコンテナを発見することによって、前記補助コードを発見する、請求項１２に記載のシステム。
【請求項１５】
前記発見モジュールが、前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを、
コンテナプラットフォームによる前記アプリケーションコンテナのインスタンス化の際に、新しい補助データをスキャンするスクリプトと共に前記ホストシステム上の前記アプリケーションコンテナをインスタンス化する前記コンテナプラットフォームを構成することと、
前記アプリケーションコンテナをインスタンス化する間、前記スクリプトを実行している前記コンテナプラットフォームによって、前記データボリュームコンテナの前記位置を発見すること、
によって発見する、請求項１２に記載のシステム。
【請求項１６】
前記修正モジュールが、前記アプリケーションコンテナを再スタートすることによって、前記補助コードを収容する前記データボリュームコンテナの前記位置への前記ポインタを用いて、前記アプリケーションコンテナをインスタンス化する、請求項１２に記載のシステム。
【請求項１７】
前記修正モジュールが、追加の補助コードを収容する新しいデータボリュームコンテナの位置への追加のポインタを用いて、前記アプリケーションコンテナを再スタートし、
前記発見モジュールが、
前記アプリケーションコンテナによって、前記新しいデータボリュームコンテナの前記位置を発見し、
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置を自動的に再発見し、
前記修正モジュールが、前記アプリケーションコンテナによって、前記補助コード及び前記追加の補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正する、請求項１２に記載のシステム。
【請求項１８】
前記補助コードが、前記アプリケーションコンテナ内で実行されている前記アプリケーションへのプラグインを含む、請求項１２に記載のシステム。
【請求項１９】
前記補助コードが、前記アプリケーションコンテナ内で実行されている前記アプリケーションへのパッチを含む、請求項１２に記載のシステム。
【請求項２０】
１つ以上のコンピュータ可読命令を含む非一過性コンピュータ可読媒体であって、前記命令が、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の前記他のソフトウェアから分離する、前記アプリケーションコンテナを識別させ、
前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正するように設計された補助コードを識別させ、
前記アプリケーションコンテナをホストする前記ホストシステムに配布されるデータボリュームコンテナイメージに、前記補助コードをパッケージ化させ、
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見させ、
前記アプリケーションコンテナによって、少なくとも部分的に、前記補助コードを収容する前記データボリュームコンテナの前記位置への前記ポインタを用いて、前記アプリケーションコンテナをインスタンス化することによって、前記スタティックアプリケーションコンテナイメージを修正することなく、前記補助コードを有する前記アプリケーションコンテナ内で実行されている前記アプリケーションの前記実行を修正させる、非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
過去には、大規模なコンピューティングプロジェクトは、高くそびえるラックのコンピュータを有する大きな物理データセンタを所有する個人及び企業に限定されていた。現在、分散コンピューティングは、リソースを有する人は誰でも、彼らの好ましいコンピューティングデバイスのインスタンスを実行するために必要な数のサーバスペースを購入することを可能にする。更なる効率の改善は、仮想化されたアプリケーションのそれぞれための仮想化されたオペレーティングシステム全体をシミュレートするために必要なリソースを必要とせずに、管理者がアプリケーションを実行することを可能にする、アプリケーションコンテナの形態で導入されてきた。コンテナは、各アプリケーションに対する処理要件を低減することができ、同じホスト上でより多くのアプリケーションを実行することを可能にする。コンテナは、数分続く短時間動作から数週間又は数ヶ月続く長時間動作までのいずれにも使用することができ、多種多様なコンピューティングタスクを完了するために、多種多様なアプリケーションを実行するように構成することができる。
【０００２】
コンテナ配信のための多くの従来のシステムは、携帯可能で、コンテナをインスタンス化するために使用することができるコンテナコードのスタティックバージョンである、コンテナイメージを使用する。イメージから生成されるコンテナベースのアプリケーションを更新するか、又は修正することは、典型的には、イメージを再構築することと、コンテナをホストする全ての位置に新しいイメージを再配信することとを含む。残念ながら、イメージを再構築及び再配信するプロセスは、相当なコンピューティングリソースを消費し、潜在的に望ましくない遅延を伴う可能性がある。したがって、本開示は、コンテナを更新するためのシステム及び方法に対する必要性を識別し、対処する。
【発明の概要】
【０００３】
以下により詳細に記載されるように、本開示は、アプリケーションコンテナによって発見されるデータボリュームコンテナ内に補助コードを配信することによってコンテナを更新するための様々なシステム及び方法を記載する。
【０００４】
一実施例において、コンテナを更新するためのコンピュータ実施方法は、（ｉ）スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間を、ホストシステム上の他のソフトウェアから分離するアプリケーションコンテナを識別することと、（ｉｉ）アプリケーションコンテナ内で実行されているアプリケーションの実行を修正するように設計された補助コードを識別することと、（ｉｉｉ）アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージングすることと、（ｉｖ）アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見することと、（ｖ）アプリケーションコンテナによって、少なくとも部分的に、補助コードを収容するデータボリュームコンテナの位置へのポインタを用いて、アプリケーションコンテナをインスタンス化することによって、スタティックアプリケーションコンテナイメージを修正することなく、補助コードを有するアプリケーションコンテナ内で実行されているアプリケーションの実行を修正することと、を含んでもよい。
【０００５】
一実施形態において、アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見することは、スタティックアプリケーションコンテナイメージの作成において、アプリケーションコンテナがスタティックアプリケーションコンテナイメージからインスタンス化される際、新しい補助コードをスキャンするスクリプトと共にスタティックアプリケーションコンテナイメージを構成することと、スクリプトを実行しているアプリケーションコンテナによって、データボリュームコンテナの位置へのポインタを発見することと、を含んでもよい。一実施形態において、新しい補助コードをスキャンするスクリプトと共にスタティックアプリケーションコンテナイメージを構成することは、所定のディレクトリをスキャンするようにスクリプトを構成することを含んでもよく、アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージ化することは、ホストシステム上の所定のディレクトリ内にデータボリュームコンテナをインスタンス化するように、データボリュームコンテナイメージを構成することを含んでもよく、スクリプトによって、補助コードを発見することとは、所定のディレクトリ内のデータボリュームコンテナを発見することを含んでもよい。
【０００６】
一実施形態において、一実施形態において、アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見することは、コンテナプラットフォームによるアプリケーションコンテナのインスタンス化の際に、新しい補助データをスキャンするスクリプトと共にホストシステム上のアプリケーションコンテナをインスタンス化するコンテナプラットフォームを構成することを含んでもよい。この実施形態はまた、アプリケーションコンテナをインスタンス化する間、スクリプトを実行しているコンテナプラットフォームによって、データボリュームコンテナの位置を発見することを含んでもよい。一部の実施例において、アプリケーションコンテナによって、補助コードを有するアプリケーションコンテナ内で実行されているアプリケーションの実行を修正することは、アプリケーションコンテナによって、データボリュームコンテナ内のデータボリューム内にインストールスクリプトを配置することと、インストールスクリプトを実行していることと、を含んでもよい。
【０００７】
いくつかの実施例において、補助コードを収容するデータボリュームコンテナの位置へのポインタを用いて、アプリケーションコンテナをインスタンス化することは、アプリケーションコンテナを再スタートすることを含んでもよい。一実施形態において、コンピュータ実施方法は、（ｉ）追加の補助コードを収容する新しいデータボリュームコンテナの位置への追加のポインタを用いて、アプリケーションコンテナを再スタートすることと、（ｉｉ）アプリケーションコンテナによって、新しいデータボリュームコンテナの位置を発見することと、（ｉｉｉ）アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを、自動的に再発見することと、（ｉｖ）アプリケーションコンテナによって、補助コード及び追加の補助コードを有するアプリケーションコンテナ内で実行されているアプリケーションの実行を修正することと、を更に含んでもよい。
【０００８】
一実施形態において、補助コードは、アプリケーションコンテナ内で実行されているアプリケーションへのプラグインを含んでもよい。追加的又は代替的に、補助コードは、アプリケーションコンテナ内で実行されているアプリケーションへのパッチを含んでもよい。一実施形態において、アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナの位置へのポインタを発見することは、ホストシステム上のデータボリュームコンテナの位置とホストシステム上の新しい位置との間にシンボリックリンクを作成することを含んでもよい。
【０００９】
一実施形態において、コンピュータ実施方法は、（ｉ）アプリケーションの第１のインスタンスをホストする第１のアプリケーションコンテナ、及びアプリケーションの第２のインスタンスをホストする第２のアプリケーションコンテナを識別することと、（ｉｉ）アプリケーションの実行を修正するように設計された追加の補助コードを識別することと、（ｉｉｉ）追加の補助コードを追加のデータボリュームコンテナイメージにパッケージングすることと、（ｉｖ）第１のアプリケーションコンテナによって、追加のデータボリュームコンテナイメージからインスタンス化された追加のデータボリュームコンテナの位置へのポインタを発見することと、（ｖ）第１のアプリケーションコンテナによって、補助コードではなく追加の補助コードを用いて、第１のアプリケーションコンテナ内で実行されているアプリケーションの第１のインスタンスの実行を修正することと、（ｖｉ）第２のアプリケーションコンテナによって、追加の補助コードではなく補助コードを用いて、第２のアプリケーションコンテナ内で実行されているアプリケーションの第２のインスタンスの実行を修正することと、を更に含んでよい。
【００１０】
一実施例において、上記の方法を実施するためのシステムは、（ｉ）メモリに記憶された識別モジュールであって、（ａ）スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間を、ホストシステム上の他のソフトウェアから分離するアプリケーションコンテナを識別し、（ｂ）アプリケーションコンテナ内で実行されているアプリケーションの実行を修正するように設計された補助コードを識別する、識別モジュールと、（ｉｉ）メモリに記憶されたパッケージ化モジュールであって、アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージ化する、パッケージ化モジュールと、（ｉｉｉ）メモリに記憶された発見モジュールであって、アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見する、発見モジュールと、（ｉｖ）メモリに記憶された修正モジュールであって、アプリケーションコンテナによって、少なくとも部分的に、補助コードを収容するデータボリュームコンテナの位置に、ポインタを用いてアプリケーションコンテナをインスタンス化することによって、スタティックアプリケーションコンテナイメージを修正することなく、補助コードを用いて、アプリケーションコンテナ内で実行されているアプリケーションの実行を修正する、修正モジュールと、（ｖ）識別モジュール、パッケージ化モジュール、発見モジュール、及び修正モジュールを実行する、少なくとも１つの物理プロセッサと、を含んでもよい。
【００１１】
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ以上のコンピュータ実行可能な命令を含んでもよく、この命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、（ｉ）スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間をする間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間を、ホストシステム上の他のソフトウェアから分離するアプリケーションコンテナを識別させ、（ｉｉ）アプリケーションコンテナ内で実行されているアプリケーションの実行を修正するように設計された補助コードを識別させ、（ｉｉｉ）アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージングさせ、（ｉｖ）アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見させ、（ｖ）アプリケーションコンテナによって、少なくとも部分的に、補助コードを収容するデータボリュームコンテナの位置へのポインタを用いて、アプリケーションコンテナをインスタンス化することによって、スタティックアプリケーションコンテナイメージを修正することなく、補助コードを有するアプリケーションコンテナ内で実行されているアプリケーションの実行を修正させてもよい。
【００１２】
上記で述べた実施形態のうちのいずれかからの特性は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１３】
添付の図面は、いくつかの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明と共に、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】コンテナを更新するための例示的なシステムのブロック図である。
【図２】コンテナを更新するための更なる例示的なシステムのブロック図である。
【図３】コンテナを更新するための例示的な方法のフロー図である。
【図４】コンテナを更新するための例示的なコンピューティングシステムのブロック図である。
【図５】コンテナを更新するための例示的なコンピューティングシステムのブロック図である。
【００１４】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【発明を実施するための形態】
【００１５】
本開示は、概して、コンテナを更新するためのシステム及び方法を対象とする。以下でより詳細に説明するように、アプリケーションコンテナイメージ及び／又はコンテナプラットフォームを構成して、アプリケーションコンテナがインスタンス化されるたびに新しい補助コードを検索することによって、アドオン、ホットフィックス、プラグインなど含むデータボリュームコンテナを自動的に発見するように構成することによって、本明細書に記載される様々なシステム及び方法は、アプリケーションコンテナを、ユーザの介入が最小の新しいコードで、ベースアプリケーションコンテナイメージへの変更を必要とすることなく、効率的に更新してもよい可能性がある。更に、本明細書に記載されるシステム及び方法は、コンピューティングデバイス上のコンテナ内で実行されているアプリケーションの機能を改善すること、及び／又は更新がコンピューティングデバイス上のアプリケーションコンテナに適用される効率を改善することによって、コンピューティングデバイス（クラウドサーバなど）の機能及び／又は性能を改善してもよい。これらのシステム及び方法はまた、仮想化コンテナ内で実行されているアプリケーションを更新するための、及び／又は補助コードを用いてアプリケーションコンテナをカスタマイズするためのプロセスを合理化することによって、同一のアプリケーションコンテナイメージを異なるコンテキストで使用することを可能にするための、効率的なプロセスを提供することによって、仮想化の分野を改善してもよい。
【００１６】
以下では、図１、２、４及び５を参照して、コンテナを更新するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実施方法についての詳細な説明もまた、図３に関連して提供される。
【００１７】
図１は、コンテナを更新するための例示的なシステム１００のブロック図である。この図に例解されるように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含んでもよい。例えば、以下でより詳細に説明されるように、例示的なシステム１００は、スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の他のソフトウェアから分離する、アプリケーションコンテナを識別する識別モジュール１０４を含んでもよい。いくつかの実施例において、識別モジュール１０４はまた、アプリケーションコンテナ内で実行されているアプリケーションの実行を修正するように設計された補助コードを識別してもよい。例示的なシステム１００は、アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージ化するパッケージ化モジュール１０６を更に含んでもよい。例示的なシステム１００はまた、アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見する発見モジュール１０８を含んでもよい。例示的なシステム１００は、アプリケーションコンテナによって、少なくとも部分的に、補助コードを収容するデータボリュームコンテナの位置に、ポインタを用いてアプリケーションコンテナをインスタンス化することによって、スタティックアプリケーションコンテナイメージを修正することなく、補助コードを用いて、アプリケーションコンテナ内で実行されているアプリケーションの実行を修正する修正モジュール１１０を更に含んでもよい。別個の要素として例解されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの一部分を表し得る。
【００１８】
特定の実施形態では、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、１つ以上のタスクを実施させてもよい１つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、以下でより詳細に説明するように、１つ以上のモジュール１０２は、図２内に例解されたデバイス（例えば、コンピューティングデバイス２０２及び／又はホストシステム２０６）等の、１つ以上のコンピューティングデバイス上で記憶され、動作するように構成されたモジュールを表現し得る。図１のモジュール１０２のうちの１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の特殊目的のコンピュータの全て又は一部分を表してもよい。
【００１９】
図１に示されているように、例示的なシステム１００はまた、メモリ１４０など、１つ以上のメモリデバイスも含み得る。メモリ１４０は、概して、データ及び／又はコンピュータ可読命令を記憶できる、任意の種類又は形式の揮発性又は不揮発性の記憶デバイス又は媒体を表す。一例では、メモリ１４０は、モジュール１０２のうちの１つ以上を記憶、ロード、及び／又は維持し得る。メモリ１４０の例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、光ディスクドライブ、キャッシュ、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なストレージメモリが挙げられる。
【００２０】
図１に示されているように、例示的なシステム１００はまた、物理プロセッサ１３０など、１つ以上の物理プロセッサも含み得る。物理プロセッサ１３０は、概して、コンピュータ可読命令を解釈でき、かつ／又は実行できる任意の種類又は形式のハードウェア実施処理ユニットを表す。一例では、物理プロセッサ１３０は、メモリ１４０に記憶されているモジュール１０２のうちの１つ以上にアクセスし得、かつ／又はこれらを修正し得る。追加的又は代替的に、物理プロセッサ１３０は、１つ以上のモジュール１０２を実行して、コンテナの更新を容易にしてもよい。物理プロセッサ１３０の例としては、マイクロプロセッサ、マイクロコントローラ、中央処理ユニット（ＣＰＵ）、ソフトコアプロセッサを実装しているフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、これらのうちの１つ以上の部分、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適な物理プロセッサが挙げられるが、これらに限定されない。
【００２１】
図１に示すように、例示的なシステム１００はまた、アプリケーションコンテナ１２２、補助コード１２４、データボリュームコンテナイメージ１２６及び／又はデータボリュームコンテナ１２８などの１つ以上の追加要素１２０を含んでもよい。アプリケーションコンテナ１２２は、概して、アプリケーションをホストすることができる、任意のタイプ又は形態の仮想化プラットフォームを表す。補助コード１２４は、アプリケーションに適用され得る、及び／又はアプリケーションの挙動を修正することができる任意のタイプ又は形態のコードを概して表す。データボリュームコンテナイメージ１２６は、概して、データボリュームコンテナをインスタンス化するために使用することができる任意のタイプ又は形態のコードを表す。データボリュームコンテナ１２８は、概して、補助コードを記憶及び／又は実行することができる任意のタイプ又は形態の仮想化コンテナを表す。
【００２２】
図１の例示的なシステム１００は、様々な態様で実装され得る。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表し得る。図２に示されるように、システム２００は、ネットワーク２０４を介してホストシステム２０６と通信するコンピューティングデバイス２０２を含み得る。一例において、モジュール１０２の機能性の全て又は一部分は、コンピューティングデバイス２０２、ホストシステム２０６、及び／又は任意の他の好適なコンピューティングシステムによって実施され得る。以下でより詳細に説明するように、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２及び／又はホストシステム２０６のうちの少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイス２０２及び／又はホストシステム２０６がコンテナを更新できるようにし得る。
【００２３】
コンピューティングデバイス２０２は、コンピュータ実行可能命令を読み出すことができる任意のタイプ又は形式のコンピューティングデバイスを概して表す。いくつかの実施形態において、コンピューティングデバイス２０２は、開発者によって使用されるパーソナルコンピューティングデバイスであってもよい。他の実施形態において、コンピューティングデバイス２０２は、クラウドサーバであってもよい。コンピューティングデバイス２０２の追加例としては、ノートブック、タブレット、デスクトップ、サーバ、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、マルチメディアプレイヤー、組み込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラスなど）、スマートビークル、いわゆるＩｏＴデバイス（例えば、スマート家電など）、ゲーム機、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００２４】
ホストシステム２０６は、１つ以上の仮想化コンテナをホストすることができる任意のタイプ又は形式のコンピューティングデバイスを概して表す。いくつかの実施形態において、ホストシステム２０６は、クラウドサーバであってもよい。ホストシステム２０６の付加的な例としては、特定のソフトウェアアプリケーションを動作させ、かつ／又は様々なストレージ、データベース、及び／若しくはウェブサービスを提供するように構成された、ストレージサーバ、データベースサーバ、アプリケーションサーバ、及び／又はウェブサーバが挙げられるが、これらに限定されない。図２において単一体として例解されるが、ホストシステム２０６は、互いに連動して働き、及び／又は動作する複数のサーバを含み、及び／又は表してもよい。
【００２５】
ネットワーク２０４は、通信又はデータ転送を容易にすることができる任意の媒体又はアーキテクチャを概して表す。一実施例において、ネットワーク２０４は、コンピューティングデバイス２０２とホストシステム２０６との間の通信を容易にし得る。この例では、ネットワーク２０４は、無線及び／又は有線接続を使用して、通信又はデータ転送を容易にし得る。ネットワーク２０４の例としては、限定するものではないが、イントラネット、ワイドエリアネットワーク（Wide Area Network、ＷＡＮ）、ローカルエリアネットワーク（Local Area Network、ＬＡＮ）、パーソナルエリアネットワーク（Personal Area Network、ＰＡＮ）、インターネット、電力線通信（Power Line Communication、ＰＬＣ）、セルラネットワーク（例えば、汎欧州デジタル移動電話方式（Global System for Mobile Communications、ＧＳＭ）ネットワーク）、１つ以上の上記の部分、上記のうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なネットワークを含む。
【００２６】
アプリケーション２０８は、概して、任意のタイプ又は形態の実行可能コードを表す。アプリケーションコンテナイメージ２１０は、概して、アプリケーションコンテナをインスタンス化するために使用することができる任意のタイプ又は形態のコードを表す。
【００２７】
多くの他のデバイス又はサブシステムは、図１のシステム１００及び／又は図２のシステム２００に接続され得る。逆に、図１及び図２に示す構成要素及びデバイスの全てが、本明細書において説明及び／又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図２に示すものとは異なる様式で相互接続されてもよい。システム１００及び２００はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの１つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び／又はコンピュータ制御論理とも称される）としてコード化され得る。
【００２８】
「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波などの伝送タイプ媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びＢＬＵ−ＲＡＹディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）などの非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【００２９】
図３は、コンテナを更新するための例示的なコンピュータ実施方法３００のフローチャートである。図３に示されている工程は、図１のシステム１００、図２のシステム２００、及び／又はこれらのうちの１つ以上の変形若しくは組み合わせを含む、任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施され得る。一例では、図３に示されている工程のそれぞれは、複数の副工程を含む及び／又はそれらによって表される構造を有するアルゴリズムを表すものであり得、これらの例を以下に詳細に示す。
【００３０】
図３に示すように、ステップ３０２において、本明細書に記載された１つ以上のシステムは、スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の他のソフトウェアから分離する、アプリケーションコンテナを識別してもよい。例えば、識別モジュール１０４は、図２に示すコンピューティングデバイス２０２の一部として、スタティックアプリケーションコンテナイメージ２１０からインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ１２２内で実行されるアプリケーション２０８のユーザ空間をホストシステム２０６上の他のソフトウェアから分離する、アプリケーションコンテナ１２２を識別してもよい。
【００３１】
本明細書において使用される際、用語「アプリケーション」は、概して、プロセスを開始することができる任意の実行可能コードを指す。いくつかの実施形態において、アプリケーションは、ソフトウェアであってもよい。追加的又は代替的に、アプリケーションはスクリプトであってもよい。いくつかの実施例において、アプリケーションはスタンドアロンアプリケーションであってもよい。他の実施例において、アプリケーションは、ウェブアプリケーションのためのインターフェースなど、より大きなシステムのためのフロントエンドであってもよい。いくつかの実施例において、アプリケーションは、相互動作プログラム及び／又は実行可能オブジェクトの集合を含んでもよい。一実施例において、アプリケーションは、バックアップアプリケーション、記憶アプリケーション、及び／又は重複排除アプリケーションであってもよい。
【００３２】
本明細書において使用される際、用語「コンテナ」は、概して、オペレーティングシステム全体を含まないが、ホストコンピューティングシステムのオペレーティングシステムからコンピューティングリソースによって補足されたときに、少なくとも１つのプロセス及び／又はアプリケーションを実行するのに十分なコンピューティングリソースを含む任意のタイプの仮想環境を指す。いくつかの実施形態において、コンテナ内のリソース及び／又はプロセスは、コンテナの外側のリソース及び／又はプロセスから分離されてもよい。例えば、コンテナは、他のソフトウェアとカーネル空間を共有する間、配布システム上のユーザ空間を配布システム上の他のソフトウェアから分離してもよい。本明細書において使用される際、用語「ユーザ空間」は、概して、アプリケーションソフトウェアが実行されるコンピューティング環境内のメモリの部分を指す。いくつかの実施形態において、ユーザ空間は、ライブラリ、グラフィックスエンジン、特定のデバイス用のデバイスドライバ、及び／又はシステムデーモンを含んでもよい。本明細書において使用される際、用語「カーネル空間」は、オペレーティングシステムカーネル、カーネル拡張部、及びデバイスドライバを実行するために予約されたコンピューティング環境内のメモリの部分を指す。対照的に、仮想マシンなどのコンテナではない仮想化環境は、他のソフトウェアとカーネル空間を共有しなくてもよい。また、コンテナではないアプリケーション仮想化の他の形態は、カーネル空間及びユーザ空間の両方を他のアプリケーションと共有してもよい。いくつかの実施形態において、コンテナは、単一のプロセス及び／又はアプリケーションのみを実行してもよく、他の実施形態において、コンテナは、複数のプロセス及び／又はアプリケーションを実行してもよい。いくつかの実施形態において、コンテナは、ＤＯＣＫＥＲコンテナであってもよい。本明細書において使用される際、用語「アプリケーションコンテナ」は、概して、アプリケーションを記憶及び／又はホストするコンテナを指す。いくつかの実施例において、アプリケーションコンテナはまた、アプリケーションのためにバンドルされた構成要素をホストしてもよい。
【００３３】
本明細書において使用される際、用語「コンテナイメージ」は、概して、コンテナを説明するデータ及び／又は実行中のコンテナに再構成することができるがそれ自体は実行中のコンテナではないデータを記憶するデータオブジェクトを指す。いくつかの実施形態において、コンテナイメージは、コンテナを実行するために必要なデータを収容する圧縮ファイルであってもよい。いくつかの実施例において、コンテナイメージは、親コンテナイメージから構築されてもよい。いくつかの実施例において、コンテナイメージは、コンテナイメージからコンテナインスタンスを作成するシステムの観点から読み出し専用であってもよい。いくつかの実施例において、本明細書に記載されるシステムのうちの１つ以上は、単一のコンテナイメージから複数のコンテナインスタンスを作成してもよい。
【００３４】
識別モジュール１０４は、様々な方法及び／又はコンテキストでアプリケーションコンテナを識別してもよい。例えば、識別モジュール１０４は、コンテナ内で実行されるアプリケーションのために更新が可能である情報を受信したことに応じて、アプリケーションコンテナを識別してもよい。別の実施例において、識別モジュール１０４は、特定のアプリケーションを現在ホストしている全てのコンテナを検索することによって、アプリケーションコンテナを識別してもよい。追加的又は代替的に、識別モジュール１０４は、アプリケーションコンテナを指定するユーザに応答して、アプリケーションコンテナを識別してもよい。
【００３５】
ステップ３０４において、本明細書に記載されるシステムのうちの１つ以上は、アプリケーションコンテナ内で実行されているアプリケーションの実行を修正するように設計された補助コードを識別してもよい。例えば、識別モジュール１０４は、図２のコンピューティングデバイス２０２の一部として、アプリケーションコンテナ１２２内で実行されているアプリケーション２０８の実行を修正するように設計された補助コード１２４を識別してもよい。
【００３６】
本明細書において使用される際、用語「補助コード」は、概して、別のアプリケーションの挙動を修正するように設計された任意のコードを指す。いくつかの実施形態において、補助コードは、アプリケーションにパラメータを供給すること、アプリケーションに可能な動作を制限すること、アプリケーションへの及び／又はアプリケーションからのメッセージを傍受すること、及び／又は他の動作を実行することによって、別のアプリケーションの挙動を修正するアプリケーションを含んでもよい。他の実施形態において、補助コードはスタンドアロンアプリケーションでなくてもよいが、アプリケーションに適用されるように設計されたコードであってもよい。例えば、補助コードは、アプリケーションで問題を修正する及び／又はアプリケーションに機能を追加するように設計された、ホットフィックス、パッチ、プラグイン、更新、又は他のコードであってもよい。いくつかの実施例において、補助コードは、構成パラメータを更新するための内部論理を含んでもよく、及び／又は既存のアプリケーションデータを、新しいバイナリ及び／又はライブラリをインストールすること以外に処理してもよい。いくつかの実施形態において、補助コードは、バイナリ及び／又はライブラリを作成し、及び／又はアプリケーションに構成変更を行うインストールスクリプトを含んでもよい。
【００３７】
識別モジュール１０４は、様々な方法で補助コードを識別してもよい。一実施例において、補助コードは、アプリケーションに対する自動更新であってもよく、識別モジュール１０４は、アプリケーションのための更新サービスを介して補助コードを識別してもよい。別の実施例において、開発者は、補助コードを識別モジュール１０４に指定してもよい。追加的又は代替的に、識別モジュール１０４は、アプリケーションに関連する補助コードを検索することによって補助コードを識別してもよい。
【００３８】
ステップ３０６において、本明細書に記載されるシステムのうちの１つ以上は、アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージ化してもよい。例えば、パッケージ化モジュール１０６は、図２のコンピューティングデバイス２０２の一部として、アプリケーションコンテナ１２２をホストするホストシステム２０６に配布するために、データボリュームコンテナイメージ１２６内に補助コード１２４をパッケージ化してもよい。
【００３９】
本明細書において使用される際、用語「データボリュームコンテナ」は、概して、他のコンテナに暴露されるように構成された１つ以上のデータボリュームを収容する任意のコンテナを指す。いくつかの実施形態において、データボリュームコンテナは、読み出し専用であってもよく、及び／又は読み出し専用として露出されるデータボリュームを収容してもよい。いくつかの実施例において、データボリュームコンテナは、指定されたボリュームであってもよく、及び／又はこれを収容してもよい。いくつかの実施形態において、データボリュームコンテナは、コンテナとして処理されることに加えて、又はコンテナとして処理される代わりに、データボリュームとしてコンテナプラットフォームによって処理されてもよい。いくつかの実施形態において、複数のアプリケーションコンテナは、同じ読み出し専用データボリュームコンテナから読み出されてもよい。本明細書において使用される際、用語「データボリューム」は、概して、アプリケーション及び／又はプロセスによって読み出され得る１つ以上のファイルを記憶する任意のディレクトリを指す。いくつかの実施例において、データボリュームは、バイナリ、ライブラリ、及び／又は構成ファイルの組み合わせを収容してもよい。
【００４０】
パッケージ化モジュール１０６は、様々な方法及び／又はコンテキストで補助コードをパッケージ化してもよい。例えば、パッケージ化モジュール１０６は、ベースコンテナイメージから複製することによって補助コードをホストするためのコンテナイメージを作成してもよい。いくつかの実施形態において、補助コードが独立して実行することができない場合があるため、補助コードはコンテナ内にパッケージ化されてもよい。
【００４１】
いくつかの実施例において、パッケージ化モジュール１０６は、データボリュームコンテナイメージ内に、プラグインなどの単一の補助コードをパッケージ化してもよい。他の実施例において、パッケージ化モジュール１０６は、同じアプリケーションを意図した複数の補助コードを、１つのデータボリュームコンテナイメージにパッケージ化してもよい。いくつかの実施形態において、パッケージ化モジュール１０６は、パッケージ化モジュール１０６がその後、単一のデータボリュームコンテナイメージにパッケージ化する異なるデータボリュームに、複数の補助コードをパッケージ化してもよい。いくつかの実施例において、データボリュームコンテナは補助コードのみを含んでもよく、結果として、補助コード内のファイルによって占有される全メモリと同じ量のメモリを占めるデータボリュームコンテナイメージをもたらしてもよい。
【００４２】
ステップ３０８において、本明細書に記載されるシステムのうちの１つ以上は、アプリケーションコンテナによって、ホストシステム上のデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見してもよい。例えば、発見モジュール１０８は、図２のコンピューティングデバイス２０２の一部として、アプリケーションコンテナ１２２によって、ホストシステム２０６上のデータボリュームコンテナ１２８の位置を発見してもよい。
【００４３】
発見モジュール１０８は、様々な方法で、データボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見してもよい。一部の実施形態において、アプリケーションコンテナ及び／又はアプリケーションコンテナを実行するコンテナプラットフォームは、データボリュームコンテナ及び／又はデータボリュームコンテナイメージの位置を発見するスクリプトを有して構成されてもよい。いくつかの実施例において、データボリュームコンテナイメージは、ホストシステムのコンテナイメージキャッシュ内に記憶されてもよく、データボリュームコンテナイメージは、所定の位置でデータボリュームコンテナをインスタンス化するように構成されてもよい。いくつかの実施形態において、発見モジュール１０８は、データボリュームコンテナイメージの位置を発見し、次いで、アプリケーションコンテナがインスタンス化される前及び／又はインスタンス化されるときに、データボリュームコンテナをデータボリュームコンテナイメージからインスタンス化してもよい。他の実施形態において、コンテナプラットフォームは、データボリュームコンテナイメージが配布されるとすぐに、データボリュームコンテナイメージからデータボリュームコンテナをインスタンス化してもよく、発見モジュール１０８は、インスタンス化されたデータボリュームコンテナの位置を発見してもよい。いくつかの実施例において、アプリケーションコンテナは、インスタンス化されたデータボリュームコンテナに関する情報を受信してもよいが、データボリュームコンテナイメージに関する情報を受信しなくてもよい。いくつかの実施形態において、発見モジュール１０８は、１つのデータボリュームコンテナ内に複数のデータボリュームを発見してもよい。いくつかの実施例において、発見モジュール１０８は、単一のデータボリュームコンテナ内の全てのデータボリュームを発見し得る。
【００４４】
例えば、パッケージ化モジュール１０６は、アプリケーションコンテナの一部として、スタティックアプリケーションコンテナイメージの作成において、アプリケーションコンテナがスタティックアプリケーションコンテナイメージからインスタンス化される際、新しい補助コードをスキャンするスクリプトと共にスタティックアプリケーションコンテナイメージを構成することによって、ホストシステム上のデータボリュームコンテナイメージの位置をパッケージ化してもよい。この実施形態において、発見モジュール１０８は、スクリプトを実行しているアプリケーションコンテナによって、データボリュームコンテナの位置を発見してもよい。いくつかの実施形態において、新しい補助コードをスキャンするスクリプトと共にスタティックアプリケーションコンテナイメージを構成することは、所定のディレクトリをスキャンするようにスクリプトを構成することを含んでもよく、アプリケーションコンテナをホストするホストシステムに配布されるデータボリュームコンテナイメージに、補助コードをパッケージ化することは、ホストシステム上の所定のディレクトリ内にデータボリュームコンテナをインスタンス化するように、データボリュームコンテナイメージを構成することを含んでもよい。この実施形態において、スクリプトによって、補助コードを発見することは、所定のディレクトリ内のデータボリュームコンテナを発見することを含んでもよい。いくつかの実施形態において、発見モジュール１０８は、アプリケーションの動作への影響を最小限に抑えるために、アプリケーションコンテナが再スタートされる前及び／又はインスタンス化される前に、データボリュームコンテナを発見及び／又はインストールしてもよい。
【００４５】
いくつかの実施例において、コンテナは、所定のディレクトリに記憶されたデータボリュームコンテナ及び／又はコンテナイメージの全てのインスタンスを発見してもよく、及び／又は、複数のデータボリュームコンテナをすぐに発見してもよい。例えば、図４に示すように、アプリケーションコンテナ４０８は、ホストシステム４０６上で実行されてもよい。いくつかの実施例において、アプリケーションコンテナ４０８は、アプリケーション４１０をホストしてもよく、及び／又はスクリプト４１２を用いて構成されてもよい。一実施形態において、アプリケーション４０８がインスタンス化されるたびに、アプリケーション４１０が開始される前に、アプリケーションコンテナ４０８は、スクリプト４１２を実行して、データボリュームコンテナのための所定のディレクトリ４１４を検索してもよい。いくつかの実施例において、所定のディレクトリ４１４は、補助コード４１８を収容するデータボリュームコンテナ４１６、及び／又は補助コード４２４を収容するデータボリュームコンテナ４２２を収容してもよい。一実施例において、スクリプト４１２は、データボリュームコンテナ４１６及び／又はデータボリュームコンテナ４２２を発見してもよく、及び／又は補助コード４１８及び／又は補助コード４２４をアプリケーション４１０に適用してもよい。
【００４６】
一実施形態において、パッケージ化モジュール１０６は、コンテナプラットフォームによるアプリケーションコンテナのインスタンス化の際に、新しい補助データをスキャンするスクリプトと共にホストシステム上のアプリケーションコンテナをインスタンス化するコンテナプラットフォームを構成することによって、ホストシステム上のデータボリュームコンテナイメージをパッケージ化してもよい。この実施形態において、発見モジュール１０８は、アプリケーションコンテナをインスタンス化している間に、スクリプトを実行しているコンテナプラットフォームによって、データボリュームコンテナの位置を発見してもよい。本明細書において使用される際、用語「コンテナプラットフォーム」は、概して、コンテナを実行することができる任意のアプリケーション、モジュール、スクリプト、及び／又はコードを指す。いくつかの実施形態において、コンテナプラットフォームは、入力としてコンテナイメージファイルを取り込み、イメージファイルからコンテナを開始してもよい。いくつかの実施例において、コンテナプラットフォームは、コンテナによって使用されるデータボリューム及び／又は他のデータをホストしてもよい。いくつかの実施形態において、コンテナプラットフォームは、コンテナエンジンを含んでもよい。例えば、コンテナプラットフォームは、ＤＯＣＫＥＲコンテナエンジンであってもよい。
【００４７】
一実施形態において、発見モジュール１０８は、ホストシステム上のデータボリュームコンテナの位置とホストシステム上の新しい位置との間にシンボリックリンクを作成してもよい。一実施例において、発見モジュール１０８は、データボリュームコンテナの位置と、アプリケーションコンテナの名前空間内の位置との間にシンボリックリンクを作成してもよい。いくつかの実施形態において、データボリュームコンテナは、シンボリックリンクを作成するスクリプトを含んでもよい。いくつかの実施例において、同じスクリプトは、シンボリックリンクを作成し、補助コードをアプリケーションコンテナ内にインストールしてもよい。シンボリックリンクを作成することによって、本明細書に記載されるシステムは、データボリュームコンテナを異なるディレクトリに複製するためのメモリ及び／又は処理電力を節約してもよい。いくつかの実施例において、本明細書に記載されるシステムは、データボリュームコンテナの位置と複数の他の位置との間にシンボリックリンクを作成してもよい。例えば、本明細書に記載されるシステムは、異なる特定用途向けディレクトリへのシンボリックリンクを作成してもよく、異なるアプリケーションコンテナは、データボリュームコンテナを見つけることを期待する。いくつかの実施形態において、本明細書に記載されるシステムは、データボリュームコンテナの完全性を保存するために、データボリュームコンテナの読み出し専用のバージョンへのシンボリックリンクを作成してもよい。
【００４８】
図３に戻ると、ステップ３１０において、本明細書に記載のシステムの１つ以上は、アプリケーションコンテナによって、少なくとも部分的に、補助コードを収容するデータボリュームコンテナの位置へのポインタと共にアプリケーションコンテナをインスタンス化することによって、スタティックアプリケーションコンテナイメージを修正することなく、補助コードを有するアプリケーションコンテナ内で実行されているアプリケーションの実行を修正してもよい。例えば、図２のコンピューティングデバイス２０２の一部として、修正モジュール１１０は、アプリケーションコンテナ１２２によって、少なくとも部分的に、補助コード１２４を収容するデータボリュームコンテナ１２８の位置に、ポインタを用いてアプリケーションコンテナ１２２をインスタンス化することによって、スタティックアプリケーションコンテナイメージ２１０を修正することなく、補助コード１２４を用いて、アプリケーションコンテナ１２２内で実行されているアプリケーション２０８の実行を修正してもよい。
【００４９】
修正モジュール１１０は、様々な方法で補助コードを用いてアプリケーションを修正してもよい。例えば、修正モジュール１１０は、補助コードがホットフィックス、パッチ、プラグイン、又は同様のものである場合に、補助コードをアプリケーションに適用することによって、補助コードを用いてプリケーションを修正してもよい。別の実施例において、アプリケーションを再構成すること、アプリケーションにパラメータを提供すること、アプリケーションへの及び／又はアプリケーションからのトラフィックを傍受すること、アプリケーションの許可を制限する、及び／又はアプリケーションを他の方法で管理することなど、修正モジュール１１０は、補助コードがアプリケーションに影響を及ぼす動作を行うことを可能にする方法で補助コードを実行することによって、補助コードを用いてアプリケーションを修正してもよい。いくつかの実施例において、修正モジュール１１０はまた、データボリュームコンテナイメージ内にパッケージ化されていないアプリケーションのデータ、構成、及び／又は他の設定を更新してもよい。
【００５０】
いくつかの実施例において、修正モジュール１１０は、アプリケーションコンテナを再スタートすることによって、補助コードを収容するデータボリュームコンテナの位置へのポインタを用いて、アプリケーションコンテナを修正してもよい。例えば、修正モジュール１１０は、コンテナを再スタートしてもよく、アプリケーションコンテナを再スタートするためのコマンドに対するパラメータとして、データボリュームコンテナの位置を通過させてもよい。他の実施例において、修正モジュール１１０は、以前に実行されていないアプリケーションコンテナをインスタンス化してもよく、データボリュームコンテナの位置へのポインタを用いてアプリケーションをインスタンス化してもよい。いくつかの実施形態において、修正モジュール１１０は、データボリュームコンテナ内に記憶されたデータボリュームにおいてインストールスクリプトを実行することによって、補助コードを用いてアプリケーションを修正してもよい。いくつかの実施例において、修正モジュール１１０は、同じデータボリュームコンテナ内に記憶された複数のデータボリュームのそれぞれの内部で、インストールスクリプトを実行してもよい。
【００５１】
いくつかの実施形態において、同じアプリケーションのインスタンスを実行する異なるアプリケーションコンテナは、異なるデータボリュームコンテナイメージ内に記憶された異なるデータボリューム内及び／又はデータボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナ内に記憶された異なる補助コードを用いてアプリケーションを発見及び／又は修正してもよい。例えば、図５に示すように、ホストシステム５０６は、コンテナプラットフォーム５０８をホストしてもよい。いくつかの実施例において、コンテナプラットフォーム５０８は、アプリケーションコンテナイメージ５２０及び／又はアプリケーション５１０の全てのホストインスタンスから全てインスタンス化されるアプリケーションコンテナ５１２、５１４及び／又は５１６をホストしてもよい。一実施例において、アプリケーションコンテナ５１２は、データボリュームコンテナ５２２を発見した後に補助コード５２４を用いてアプリケーション５１０を修正してもよく、アプリケーションコンテナ５１６は、データボリュームコンテナ５２６を発見した後に補助コード５２８を用いてアプリケーション５１０を修正してもよく、及び／又はアプリケーションコンテナ５１４は、両方のデータボリュームコンテナを発見した後に、補助コード５２４及び補助コード５２８の両方を用いてアプリケーション５１０を修正してもよい。一実施例において、補助コード５２４は、アプリケーションコンテナ５１６ではなく、アプリケーションコンテナ５１２及び５１４内のアプリケーション５１０のインスタンスによって実行されているタスクに有用な機能を追加するプラグインであってもよく、補助コード５２８は、アプリケーションコンテナ５１２ではなく、アプリケーションコンテナ５１４及び５１６内のアプリケーション５１０のインスタンスによって実行されているタスクに有用な機能を追加するプラグインであってもよい。
【００５２】
いくつかの実施形態において、データボリュームコンテナを以前に発見したアプリケーションコンテナは、アプリケーションコンテナが再スタートされるたびに、そのデータボリュームコンテナを自動的に再発見してもよい。いくつかの実施例において、アプリケーションコンテナは、新しいデータボリュームコンテナが利用可能になっていることに起因して再スタートするときであっても、以前に発見されたデータボリュームコンテナを自動的に再発見してもよい。例えば、アプリケーションコンテナ５１４は、データボリュームコンテナ５２２を発見してもよく、補助コード５２４を用いてアプリケーション５１０を修正してもよい。後から、アプリケーションコンテナ５１４は再スタートされてもよく、データボリュームコンテナ５２６を発見してもよい。いくつかの実施例において、アプリケーションコンテナ５１４はまた、データボリュームコンテナ５２２を自動的に再発見してもよく、補助コード５２４及び補助コード５２８の両方を用いてアプリケーション５１０を修正してもよい。いくつかの実施形態において、両方のデータボリュームコンテナが所定のディレクトリに記憶され得るため、アプリケーションコンテナ５１４は、両方のデータボリュームコンテナを発見してもよい。追加的又は代替的に、コンテナプラットフォーム５０８は、どのデータボリュームコンテナがどのアプリケーションコンテナによって発見されたかを追跡してもよい。
【００５３】
いくつかの実施形態において、本明細書に記載されるシステムは、ユーザが、各アプリケーションコンテナから読み出されるデータボリュームコンテナを追加及び／又は除去することを可能にし得るユーザインターフェースを提供してもよい。一実施形態において、アプリケーションコンテナによって発見されたデータボリュームコンテナは、ユーザが、そのアプリケーションコンテナに関連付けられたデータボリュームコンテナのリストから、データボリュームコンテナを除去するまで、再スタートのたびにそのアプリケーションコンテナによって自動的に再発見されてもよい。いくつかの実施例において、ユーザは、アプリケーションコンテナが再スタートされる次の時間の後に、パッチ、プラグイン、ホットフィックス、又は他の補助コードがアプリケーションに適用され続けることを防止するために、データボリュームコンテナを除去してもよい。一実施例において、ユーザは、現在適用されているバージョンのデータボリュームコンテナを除去すること、異なるバージョンのデータボリュームコンテナを追加すること、アプリケーション、アプリケーションコンテナを再スタートすることによって、アプリケーションに適用されるプラグイン、ホットフィックス、又は他の補助コードのバージョンを変更してもよい。
【００５４】
上記方法３００に関連して論じたように、本明細書に記載されるシステム及び方法は、アプリケーションコンテナがインスタンス化されるたびに、関連する補助コードを発見するスクリプトと共にアプリケーションコンテナイメージ及び／又はコンテナプラットフォームを構成することによって、新しいアプリケーションコンテナイメージを作成することなく、アプリケーションコンテナを効率的に更新してもよい。いくつかの実施例において、ユーザが補助コード、及び／又は補助コードをインストールするための命令を取り除くまで、コンテナが再スタートされるたびに、補助コードはアプリケーションコンテナに利用可能であってもよい。例えば、コンテナは、現在のままであるために多数のパッチを必要とする、及び／又は複数のプラグを用いて、アプリケーションの全てのインスタンスに必要なわけではない可能性がある機能性を追加する、レガシーアプリケーションをホストしてもよい。パッチがリリースされるたびに、及び／又は異なるプラグイン構成を使用するアプリケーションの各インスタンスに対して、新しいアプリケーションコンテナイメージを作成するのではなく、本明細書に記載されるシステムは、予測可能な位置にある補助コードを位置決定することによって、及び／又はどの補助コードがどのコンテナに適用されるかを追跡することによって、再スタートのたびに、アプリケーションコンテナが、関連するパッチ及び／又はプラグインを自動的に発見及びインストールすることを可能にしてもよい。このように、ホットフィックス、パッチ、及びプラグインを発見及びインストールすることによって、本明細書に記載されるシステム及び方法は、アプリケーションコンテナが再スタートされるたびに、新しいアプリケーションコンテナイメージを定期的に作成し配布する必要なく、また管理者がパッチ及び他のコードを手動で適用する必要なく、様々な異なる構成を有し、かつ様々な更新を必要とするアプリケーションコンテナをサポートしてもよい。
【００５５】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、かつ／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例として見なされるべきである。
【００５６】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他のリモートインターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、リモートデスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００５７】
種々の実施形態において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるモジュールは、本明細書において説明される機能のうちの１つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるモジュールのうちの１つ以上は、２つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【００５８】
種々の実施形態によれば、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、かつ／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。
【００５９】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、モバイルコンピューティング環境の部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なモバイルコンピューティングデバイスを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に１つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、かつ／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力を制限する、制限されたプラットフォーム、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）管理などを含む、１つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、かつ／又はモバイルコンピューティング環境と相互作用し得る。
【００６０】
本明細書において説明及び／又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの１つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
【００６１】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するモジュールを使用して、実装され得る。これらのモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのモジュールは、本明細書において開示される例示的な実施形態のうちの１つ以上を実施するように、コンピューティングシステムを構成し得る。
【００６２】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、網羅的であることを意図するものでも、開示されたいずれかの正確な形態に限定されることを意図するものでもない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【００６３】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（即ち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「ａ」又は「ａｎ」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
2021509200.tif 000003
【図２】
2021509200.tif 000004
【図３】
2021509200.tif 000005
【図４】
2021509200.tif 000006
【図５】
2021509200.tif 000007
【手続補正書】
【提出日】令和2年6月25日(2020.6.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンテナを更新するためのコンピュータ実施方法であって、前記方法は少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、前記方法は、
スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の前記他のソフトウェアから分離する、前記アプリケーションコンテナを識別することと、
前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正するように設計された補助コードを識別することと、
前記アプリケーションコンテナをホストする前記ホストシステムに配布されるデータボリュームコンテナイメージに、前記補助コードをパッケージ化することと、
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見することと、
前記アプリケーションコンテナによって、少なくとも部分的に、前記補助コードを収容する前記データボリュームコンテナの前記位置への前記ポインタを用いて、前記アプリケーションコンテナをインスタンス化することによって、前記スタティックアプリケーションコンテナイメージを修正することなく、前記補助コードを有する前記アプリケーションコンテナ内で実行されている前記アプリケーションの前記実行を修正することと、
前記スタティックアプリケーションコンテナイメージの作成において、前記アプリケーションコンテナが前記スタティックアプリケーションコンテナイメージからインスタンス化される際、新しい補助コード用の所定のディレクトリをスキャンするスクリプトと共に前記スタティックアプリケーションコンテナイメージを構成することと、
を含む、コンピュータ実施方法。
【請求項２】
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを発見することが、
前記スクリプトを実行している前記アプリケーションコンテナによって、前記データボリュームコンテナの前記位置への前記ポインタを発見することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記新しい補助コードをスキャンする前記スクリプトと共に前記スタティックアプリケーションコンテナイメージを構成することが、所定のディレクトリをスキャンするように前記スクリプトを構成することを含み、
前記アプリケーションコンテナをホストする前記ホストシステムに配布される前記データボリュームコンテナイメージに、前記補助コードをパッケージ化することが、前記ホストシステム上の前記所定のディレクトリ内に、前記データボリュームコンテナをインスタンス化するように前記データボリュームコンテナイメージを構成することを含み、
前記スクリプトによって、前記補助コードを発見することが、前記所定のディレクトリ内の前記データボリュームコンテナを発見することを含む、請求項１又は請求項２に記載のコンピュータ実施方法。
【請求項４】
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを発見することが、
コンテナプラットフォームによる前記アプリケーションコンテナのインスタンス化の際に、新しい補助データをスキャンするスクリプトと共に前記ホストシステム上の前記アプリケーションコンテナをインスタンス化する前記コンテナプラットフォームを構成することと、
前記アプリケーションコンテナをインスタンス化する間、前記スクリプトを実行している前記コンテナプラットフォームによって、前記データボリュームコンテナの前記位置を発見することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項５】
前記補助コードを収容する前記データボリュームコンテナの前記位置への前記ポインタを用いて、前記アプリケーションコンテナをインスタンス化することが、前記アプリケーションコンテナを再スタートすることを含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項６】
追加の補助コードを収容する新しいデータボリュームコンテナの位置への追加のポインタを用いて、前記アプリケーションコンテナを再スタートさせることと、
前記アプリケーションコンテナによって、前記新しいデータボリュームコンテナの前記位置を発見することと、
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置を自動的に再発見することと、
前記アプリケーションコンテナによって、前記補助コード及び前記追加の補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正することと、
を更に含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項７】
前記補助コードが、前記アプリケーションコンテナ内で実行されている前記アプリケーションへのプラグインを含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項８】
前記補助コードが、前記アプリケーションコンテナ内で実行されている前記アプリケーションへのパッチを含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項９】
前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを発見することは、前記ホストシステム上の前記データボリュームコンテナの前記位置と前記ホストシステム上の新しい位置との間にシンボリックリンクを作成することを含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項１０】
前記アプリケーションの第１のインスタンスをホストする第１のアプリケーションコンテナと、前記アプリケーションの第２のインスタンスをホストする第２のアプリケーションコンテナとを識別することと、
前記アプリケーションの前記実行を修正するように設計された追加の補助コードを識別することと、
前記追加の補助コードを追加のデータボリュームコンテナイメージにパッケージングすることと、
前記第１のアプリケーションコンテナによって、前記追加のデータボリュームコンテナイメージからインスタンス化された追加のデータボリュームコンテナの位置へのポインタを発見することと、
前記第１のアプリケーションコンテナによって、前記補助コードではなく前記追加の補助コードを用いて、前記第１のアプリケーションコンテナ内で実行されている前記アプリケーションの前記第１のインスタンスの実行を修正することと、
前記第２のアプリケーションコンテナによって、前記追加の補助コードではなく前記補助コードを用いて、前記第２のアプリケーションコンテナ内で実行されている前記アプリケーションの前記第２のインスタンスの実行を修正することと、
を更に含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項１１】
前記アプリケーションコンテナによって、前記補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの前記実行を修正することが、
前記アプリケーションコンテナによって、前記データボリュームコンテナ内のデータボリューム内にインストールスクリプトを配置することと、
前記インストールスクリプトを実行することと、
を含む、請求項１、請求項２、又は請求項４に記載のコンピュータ実施方法。
【請求項１２】
コンテナを更新するためのシステムであって、前記システムは、
メモリに記憶された識別するための手段であって、
スタティックアプリケーションコンテナイメージからインスタンス化され、他のソフトウェアとカーネル空間を共有する間、アプリケーションコンテナ内で実行されるアプリケーションのユーザ空間をホストシステム上の前記他のソフトウェアから分離する、前記アプリケーションコンテナを識別し、
前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正するように設計された補助コードを識別する、手段と、
メモリに記憶されたパッケージ化のための手段であって、前記アプリケーションコンテナをホストする前記ホストシステムに配布されるデータボリュームコンテナイメージに、前記補助コードをパッケージ化する、手段と、
メモリに記憶された発見のための手段であって、前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナイメージからインスタンス化されたデータボリュームコンテナの位置へのポインタを発見する、手段と、
メモリに記憶された修正のための手段であって、前記アプリケーションコンテナによって、少なくとも部分的に、前記補助コードを収容する前記データボリュームコンテナの前記位置に、前記ポインタを用いて前記アプリケーションコンテナをインスタンス化することによって、前記スタティックアプリケーションコンテナイメージを修正することなく、前記補助コードを用いて、前記アプリケーションコンテナ内で実行されている前記アプリケーションの実行を修正する、手段と、
メモリに記憶された構成のための手段であって、前記スタティックアプリケーションコンテナイメージの作成において、前記アプリケーションコンテナが前記スタティックアプリケーションコンテナイメージからインスタンス化される際、新しい補助コード用の所定のディレクトリをスキャンするスクリプトと共に前記スタティックアプリケーションコンテナイメージを構成する、手段と、
前記識別するための手段、前記パッケージ化するための手段、前記発見するための手段、前記修正するための手段、及び前記構成するための手段を実行する少なくとも１つの物理プロセッサと、
を備える、システム。
【請求項１３】
前記発見するための手段が、前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを、
前記スクリプトを実行している前記アプリケーションコンテナによって、前記データボリュームコンテナの前記位置を発見すること、
によって発見する、請求項１２に記載のシステム。
【請求項１４】
前記発見するための手段が、
所定のディレクトリをスキャンするように前記スクリプトを構成することによって、前記新しい補助コードをスキャンする前記スクリプトと共に前記スタティックアプリケーションコンテナイメージを構成し、
前記ホストシステム上の前記所定のディレクトリ内に、前記データボリュームコンテナをインスタンス化するように前記データボリュームコンテナイメージを構成することによって、前記アプリケーションコンテナをホストする前記ホストシステムに配布される前記データボリュームコンテナイメージに、前記補助コードをパッケージ化し、
前記スクリプトによって、前記所定のディレクトリ内の前記データボリュームコンテナを発見することによって、前記補助コードを発見する、請求項１２又は請求項１３に記載のシステム。
【請求項１５】
前記発見するための手段が、前記アプリケーションコンテナによって、前記ホストシステム上の前記データボリュームコンテナの前記位置への前記ポインタを、
コンテナプラットフォームによる前記アプリケーションコンテナのインスタンス化の際に、新しい補助データをスキャンするスクリプトと共に前記ホストシステム上の前記アプリケーションコンテナをインスタンス化する前記コンテナプラットフォームを構成することと、
前記アプリケーションコンテナをインスタンス化する間、前記スクリプトを実行している前記コンテナプラットフォームによって、前記データボリュームコンテナの前記位置を発見すること、
によって発見する、請求項１２又は請求項１３に記載のシステム。
【国際調査報告】
2021509200.tif 000008
2021509200.tif 000009