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

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

▶ キヤノン株式会社の特許一覧

特許7434039情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法
<>
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図1
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図2
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図3
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図4
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図5
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図6
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図7
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図8
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図9
  • 特許-情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法
(51)【国際特許分類】
   H04L 67/00 20220101AFI20240213BHJP
   G06F 9/455 20180101ALI20240213BHJP
   G06F 9/54 20060101ALI20240213BHJP
   H04L 41/0895 20220101ALI20240213BHJP
【FI】
H04L67/00
G06F9/455 150
G06F9/54 B
H04L41/0895
【請求項の数】 11
(21)【出願番号】P 2020070007
(22)【出願日】2020-04-08
(65)【公開番号】P2021166019
(43)【公開日】2021-10-14
【審査請求日】2023-03-16
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】梶本 雅弘
【審査官】鈴木 香苗
(56)【参考文献】
【文献】米国特許出願公開第2019/0379579(US,A1)
【文献】特開2017-107555(JP,A)
【文献】特開2021-117841(JP,A)
【文献】特開2016-173741(JP,A)
【文献】特表2021-519452(JP,A)
【文献】米国特許出願公開第2017/0257357(US,A1)
【文献】特表2014-503867(JP,A)
【文献】特表2018-512087(JP,A)
【文献】特開2011-108202(JP,A)
【文献】特開2018-001666(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/00
G06F 9/455
G06F 9/54
H04L 41/0895
(57)【特許請求の範囲】
【請求項1】
コンテナ型仮想化技術により構築された一つ以上のコンテナと、物理マシンであるホストマシン上に構築された一つ以上のプロセスとを有する情報処理装置であって、
送信元のコンテナ或いはプロセスと、送信先のコンテナ或いはプロセスとに関連付けて通信方式を記憶する第1記憶手段と、
前記コンテナと前記プロセスとの間の通信を制御する通信手段とを有し、
前記通信手段は、
送信元のコンテナ或いはプロセスから、前記送信元を示す送信元情報と、送信先のコンテナ或いはプロセスを示す送信先情報と通信データを含むデータを受信する受信手段と、
前記受信手段が受信した前記送信元情報及び前記送信先情報とに基づいて前記第1記憶手段を参照して、前記通信データの通信方式を取得する第1取得手段と、
前記第1取得手段が取得した前記通信方式に従って前記通信データを前記送信先のコンテナ或いはプロセスに送信する送信手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記送信元情報及び前記送信先情報とに関連付けて、前記送信先の実体情報を取得する第2取得手段を、更に有し、
前記送信手段は、前記送信先の実体情報に対応する宛先に前記通信データを送信することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記送信元情報及び前記送信先情報とに関連付けて、前記送信先の実体情報を記憶する第2記憶手段を、更に有し、
前記第2取得手段は、前記第2記憶手段を参照して前記送信先の実体情報を取得することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記通信方式は、ソケット通信、メッセージキュー、メモリ領域を介した通信、及びネットワーク通信の少なくともいずれかを含むことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記通信方式は、前記送信先情報がコンテナを示す場合はネットワーク通信であることを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記実体情報は、前記通信方式がソケット通信の場合はソケットへのパス、前記通信方式がメッセージキューの場合はメッセージキー、前記通信方式がメモリ領域を介した通信の場合は、前記メモリ領域のアドレスであることを特徴とする請求項3に記載の情報処理装置。
【請求項7】
前記コンテナ及び前記プロセスは、前記通信手段に前記データを送信する際に、前記通信手段が起動していない場合は、当該通信手段を起動させることを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記通信手段は更に、前記コンテナから前記プロセスへデータを送信する際に、送信先のプロセスが起動していない場合は、当該送信先のプロセスを起動させることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
前記通信手段は更に、前記プロセスから前記コンテナへデータを送信する際に、送信先のコンテナが起動していない場合は、当該送信先のコンテナを起動させることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項10】
前記通信手段は、前記第1取得手段が前記通信データの通信方式を取得できない場合は、前記送信元情報に対応する送信元に通信失敗を通知して、前記受信手段が受信して前記データに基づく送信を実行しないことを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
コンテナ型仮想化技術により構築された一つ以上のコンテナと、物理マシンであるホストマシン上に構築された一つ以上のプロセスとを有し、送信元のコンテナ或いはプロセスと、送信先のコンテナ或いはプロセスとに関連付けて通信方式を記憶する記憶手段を有する情報処理装置において、前記コンテナと前記プロセスとの間の通信を制御する制御方法であって、
送信元のコンテナ或いはプロセスから、前記送信元を示す送信元情報と、送信先のコンテナ或いはプロセスを示す送信先情報と通信データを含むデータを受信する受信工程と、
前記受信工程で受信した前記送信元情報及び前記送信先情報とに基づいて前記記憶手段を参照して、前記通信データの通信方式を取得する取得工程と、
前記取得工程で取得した前記通信方式に従って前記通信データを前記送信先のコンテナ或いはプロセスに送信する送信工程と、
を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法に関する。
【背景技術】
【0002】
アプリケーションは1つ以上のプロセスと呼ばれるプログラムで構成される。一般的に1つのアプリケーションが1つのプロセスで構成されることは少なく、多くの場合、役割毎にプロセスが分かれている。そのため1つのアプリケーションを動かすために、複数のプロセス間で通信を行う必要がある。これらプロセス間の通信方法は、ソケット通信やパイプ、共有メモリ、メッセージキューなど様々あり、同じマシンで動いているプロセスがOS(オペレーティングシステム)の機能を経由して通信する。
【0003】
一方で、コンテナ型仮想化と呼ばれる技術が普及してきている。コンテナ型仮想化は、コンテナと呼ばれるプロセスの実行ファイルと、その実行ファイルを動かす環境(ライブラリ等)とをまとめたパッケージを、従来のプロセスが動く空間とは隔離された仮想的な空間で動かす技術のことである。サーバ業界では、このコンテナ型仮想化技術を使用して、隔離されていない通常のプロセス群で構成されていた従来のアプリケーションを、コンテナで構築する方式へ移行してきている。従来のプロセス協調動作のためのプロセス間通信は、コンテナ間通信で代替され、コンテナ間通信はネットワーク通信で行われる形となる(例えば特許文献1)。
【0004】
前述のようにコンテナ型仮想化技術をサーバアプリケーションで使用する場合、基本的に全てのプロセスをコンテナ化することが可能である。一方で、組み込みアプリケーションにコンテナ型仮想化技術を導入する場合、一般的に組み込みシステム特有のハードウェアを制御するプロセスはコンテナ化されず、ホストマシン上のプロセスとして構成される。これは仮想マシンであるコンテナがホストマシンと隔離されており、ホストマシンのハードウェアをコンテナから制御することが基本的には不可能になっているためである。
【0005】
コンテナの隔離性を下げ、ホストマシンへアクセスすることでハードウェア制御を可能にする手法も存在する。しかしながら、OSより下の層を仮想化しないコンテナ型仮想化では、ホストマシンへのアクセスによって、例えば他のコンテナが使用するファイルを誤って削除してしまったり、OSの設定を変更するなどの不具合が混入する恐れがある。このため、この手法を採用するのは望ましくない。従って、コンテナ型仮想化技術を用いて組み込みアプリケーションを構築する場合、ホストマシン上で動くプロセスと、コンテナで動くプロセスとが共存することになるため、コンテナとホストマシンを跨いだプロセス間通信が必要となる。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2016-173741号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、コンテナとホストマシン間でプロセス間通信を行うためには、コンテナからホストマシンへのアクセスを可能にする、つまり前述の隔離性を下げる手法を採用しなければならない。これでは前述したような不具合の混入のリスクをはらむため、作成するアプリケーションごとに隔離性を下げたコンテナを、可能な限り生成しないことが望ましい。
【0008】
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
【0009】
本発明の目的は、コンテナからホストマシンへのプロセス間通信を行う際の不具合の混入の抑制、通信の責務を集約できる技術を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
コンテナ型仮想化技術により構築された一つ以上のコンテナと、物理マシンであるホストマシン上に構築された一つ以上のプロセスとを有する情報処理装置であって、
送信元のコンテナ或いはプロセスと、送信先のコンテナ或いはプロセスとに関連付けて通信方式を記憶する第1記憶手段と、
前記コンテナと前記プロセスとの間の通信を制御する通信手段とを有し、
前記通信手段は、
送信元のコンテナ或いはプロセスから、前記送信元を示す送信元情報と、送信先のコンテナ或いはプロセスを示す送信先情報と通信データを含むデータを受信する受信手段と、
前記受信手段が受信した前記送信元情報及び前記送信先情報とに基づいて前記第1記憶手段を参照して、前記通信データの通信方式を取得する第1取得手段と、
前記第1取得手段が取得した前記通信方式に従って前記通信データを前記送信先のコンテナ或いはプロセスに送信する送信手段と、を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、コンテナに対してホストマシンへのアクセス権をいたずらに付与しないため、誤ったファイルの書き込みや、メモリ破壊等の不具合の発生を防止できるという効果がある。
【0012】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。尚、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【0013】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
図1】本発明の実施形態1に係る画像形成装置のハードウェア構成を説明するブロック図。
図2】実施形態1に係る画像形成装置を動作させるファームウェアの構成を説明するブロック図。
図3】実施形態1に係る通信コンテナの機能構成を説明する機能ブロック図。
図4】実施形態1に係る通信方式変換テーブルの構成の一例を示す図。
図5】実施形態1に係る通信対象情報の一例を示す図。
図6】実施形態1に係る画像形成装置における、コンテナからホストプロセスへの通信を説明するフローチャート。
図7】実施形態1に係る画像形成装置における、ホストプロセスからコンテナへの通信を説明するフローチャート。
図8】実施形態1に係る画像形成装置において、ユーザがリモートUIから画像形成装置に保存されているデータをプリントする際の処理の流れを説明するシーケンス図。
図9】実施形態2に係る画像形成装置における、コンテナからホストプロセスへの通信処理を説明するフローチャート。
図10】実施形態2に係る画像形成装置における、ホストプロセスからコンテナへの通信処理を説明するフローチャート。
【発明を実施するための形態】
【0014】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。また本実施形態では、本発明に係る情報処理装置の一例を、例えば複合機等の画像形成装置を例に説明する。
【0015】
最初に、実施形態を説明する上で重要となるコンテナ型仮想化技術について説明する。このコンテナ型仮想化は、コンテナと呼ばれるプロセスの実行ファイルと、その実行ファイルを動かす環境(ライブラリ等)とをまとめたパッケージを、Linux(登録商標)の機能により、物理マシン上で動く通常のプロセスとは隔離された仮想的な空間で動かす技術のことである。このとき隔離された空間で動くコンテナは、仮想マシンと呼ばれる。またコンテナを動かしている物理マシンはホストマシン、そのホストマシン上で動くプロセスはホストプロセスと呼ばれる。コンテナ型仮想化のプラットフォームとしては、具体的にはDocker(登録商標)などが挙げられる。或いは自らLinux(登録商標)の機能を活用して作成したプラットフォームを備えていても良い。コンテナ型仮想化のプラットフォームは、本発明の本質を逸脱しない範囲で変更可能である。
【0016】
[実施形態1]
図1は、本発明の実施形態1に係る画像形成装置101のハードウェア構成を説明するブロック図である。実施形態1では、画像形成装置101は、プリント機能、スキャナ機能、データ通信機能等を備える複合機とするが、本発明はこのような複合機に限定されるものではない。
【0017】
画像形成装置101は、コントローラ102、スキャナ108、プリンタ110、FAX部112、操作部114、フィニッシャ116及びNIC118を有する。NICは、Network Interface Cardの略称である。画像形成装置101は、これら以外に別のハードウェアを備えていても良い。スキャナ108は、原稿の画像を光学的に読み取ってデジタル画像として出力する。プリンタ110は、画像データに従ってシート等の紙デバイスに出力(印刷)する。FAX部112は、電話回線等を介してデジタル画像データを送受信する。操作部114は、画像形成装置101に対する操作をユーザから受け付けたり、処理状態を表示するためのタッチパネルやハードキーを備えている。フィニッシャ116は、画像形成装置101のプリンタ110の排紙ユニットから出力された紙デバイスに対して、排紙、ソート、ステープル、パンチ、裁断、などの加工を施す。NIC118は、通信ネットワークLANに画像形成装置101を接続する。
【0018】
コントローラ102は、プリント機能、スキャン機能等を実現するために、この画像形成装置101全体の動作を制御している。コントローラ102は、スキャナ108と接続するためのスキャナI/F(インタフェース)107、プリンタ110と接続するためのプリンタI/F109、FAX部112と接続するためのFAXI/F111を有する。コントローラ102は更に、操作部114と接続するための操作部I/F113、フィニッシャ116と接続するためのフィニッシャI/F115、NIC118と接続するためのネットワークI/F117を備える。NIC118は、LANを介してコンピュータ119と接続され、コンピュータ119からの情報を受け付ける。
【0019】
またコントローラ102は、画像形成装置101を動作させるためのソフトウェアを実行する中央演算処理装置(以下、CPU103)、CPU103が演算を行うためのデータ等を保管するメモリであるRAM104、CPU103が実行するファームウェアを保管するメモリであるROM105、長期間のデータ保存等に使用されるストレージ106等を備える。
【0020】
以下、画像形成装置101の実行可能な機能の一例を説明する。
・複写機能
スキャナ108が原稿を読み取って得られた画像データをストレージ106に記憶し、同時にプリンタ110を使用して印刷を行なう。
・画像送信機能
スキャナ108が原稿を読み取って得られた画像データを、NIC118を介してネットワークと接続されているコンピュータ119に送信する。
・画像保存機能
スキャナ108が原稿を読み取って得られた画像データをストレージ106に記憶し、必要に応じて画像送信や画像印刷を行なう。
。画像印刷機能
ネットワークに接続されたコンピュータ119から送信された、例えばページ記述言語を解析し、プリンタ110で印刷する。
【0021】
操作部114は、コントローラ102に接続され、タッチパネルや、節電ボタン、コピーボタン、キャンセルボタン、リセットボタン、テンキー、ユーザモードキー等を備え、ユーザI/F(UI)を提供する。
【0022】
図2は、実施形態1に係る画像形成装置101を動作させるファームウェア201の構成を説明するブロック図である。
【0023】
画像形成装置101のCPU103は、ファームウェア201の内容に従って各種機能を実行する。ファームウェア201は、コンテナ制御部203及び通信コンテナ202を有する。更に、画像形成装置101によって実行される各種アプリケーション216~220をコンテナ型仮想化技術によりコンテナ化したアプリケーションコンテナ221~225を有する。また更に、画像形成装置101の持つハードウェアを制御する制御部204~209、及びデバイスドライバ210~215を有している。
【0024】
例えば、コピーアプリケーション216は、画像形成装置101の持つ複写機能を実現するソフトウェアであり、コピーアプリケーション216をコンテナ化したものがコピーコンテナ221である。同様にFAXアプリケーション217をコンテナ化したものがFAXコンテナ222、プリントアプリケーション218をコンテナ化したものがプリントコンテナ223である。更に、リモートUIアプリケーション219をコンテナ化したものがリモートUIコンテナ224、Webブラウザアプリケーション220をコンテナ化したものがWebブラウザコンテナ225である。これらアプリケーションコンテナ221~225が画像形成装置101の持つハードウェアを操作する場合、通信コンテナ202を介して制御部204~209と通信を行う。
【0025】
スキャナ制御部204は、スキャナドライバ210によって提供される制御関数を使用してスキャナ108を制御する。同様に、プリント制御部205は、プリンタドライバ211が提供する制御関数を使用してプリンタ110を制御する。またFAX制御部206は、FAXドライバ212が提供する制御関数を使用してFAX部112を制御する。操作部制御部207は、操作部ドライバ213が提供する制御関数を使用して操作部114を制御する。フィニッシャ制御部208は、フィニッシャドライバ214が提供する制御関数を使用してフィニッシャ116を制御する。ネットワーク制御部209は、ネットワークドライバ215が提供する制御関数を使用してNIC118を制御する。
【0026】
通信コンテナ202及びアプリケーションコンテナ221~225は、コンテナ制御部203によって、その起動、終了、停止等が管理される。
【0027】
実施形態1では、コンテナ制御部203のようなコンテナを一元管理する制御部を用いるが、コンテナ制御部203を持たず、各アプリケーションコンテナが個別に、その起動、終了、停止等を行う形態であっても良い。また図2に記載されているプロセスの数や種類はあくまでも一例であり、本発明の適用範囲を限定するものではない。
【0028】
図3は、実施形態1に係る通信コンテナ202の機能構成を説明する機能ブロック図である。
【0029】
通信コンテナ202は、通信方式変換部301、宛先変換部302、通信方式変換テーブル303、通信対象情報304を有する。尚、実施形態1では、通信コンテナ202をコンテナとしているが、後述する通信方式の変換及び宛先変換が行えるのであれば、その他の態様であっても良い。
【0030】
通信方式変換部301は、送信元情報と送信先情報とに基づいて、通信方式変換テーブル303を参照して通信方式を変更する。また通信方式変換部301は通信方式の変更に伴い、データのフォーマットも併せて変換する。宛先変換部302は、通信対象情報304から、通信方式変換部301で変換した通信方式で使用される実体情報を取得する。例えば、メッセージキュー通信を行う場合は、宛先変換部302はメッセージキーなどを取得する。通信コンテナ202が持つ通信方式変換テーブル303及び通信対象情報304は、実施形態1では組み込みシステムを想定しているため既知情報としているが、動的に追加、削除できる仕組みであっても良い。
【0031】
図4は、実施形態1に係る通信方式変換テーブル303の構成の一例を示す図である。
【0032】
通信方式変換テーブル303は、送信元情報401と送信先情報402とから、通信方式情報403を導き出すためのテーブルで、図示のように、送信元情報401と送信先情報402とに関連付けて通信方式情報403が記憶されている。尚、このテーブルは、例えばストレージ106に記憶されている。このときの送信元情報401、送信先情報402は、コンテナIDやプロセスID、コンテナ名やプロセス名などの情報である。また通信方式情報403は、通信コンテナ202から送信先情報402が示すコンテナ221~225、又は制御部(ホストプロセス)204~209への通信の際に使用する通信方式の情報である。例えば、コピーコンテナ221からスキャナ制御部204に対して通信を行う場合は、ソケット通信という情報が取得される。またコピーコンテナ221からFAX制御部206などの通信を行わない経路については未使用を示す情報(「未使用」)が記述されている。尚、図4において、「ソケット」はソケット通信、「共有メモリ」は、メモリ上に他のプロセスやコンテナからアクセスできるメモリ領域を作成し、そのメモリ領域を介して通信する。「メッセージキュー」は、キューに置かれたメッセージにより通信する。
【0033】
尚、図4(A)は、送信元情報401がアプリケーションコンテナ221~225、送信先情報402がホストプロセス204~209の場合の通信方式変換テーブル303を示す。また図4(B)は、送信元情報401がホストプロセス204~209、送信先情報402がアプリケーションコンテナ221~225の場合の通信方式変換テーブル303を示す。
【0034】
通信方式情報403は、通信コンテナ202から送信先情報402が示すコンテナ221~225、又はホストプロセス204~209への通信の際に使用する通信方式を示す情報である。従って、図4(B)のように送信先情報402がコンテナを示している場合は、基本的にネットワーク通信が想定される。仮に全ての通信の組み合わせでネットワーク通信が使用される場合、図4(B)の通信方式変換テーブルは保持せずに、全ての通信をネットワーク通信に変換するようにしても良い。
【0035】
尚、送信元から通信コンテナ202への通信に関しては特に限定せずに、本発明の本質を逸脱しない範囲で自由に選択できるものとする。
【0036】
図5は、実施形態1に係る通信対象情報304の一例を示す図である。
【0037】
この通信対象情報304は、送信元501と送信先502とから送信先の実体情報503を取得するために使用される。この送信先の実体情報503は、複数のプロセス間の通信に対応するために様々な形態を取り得る。尚、送信先の実体情報503は、通信方式変換テーブル303に組み込み、通信方式情報403を変換する際にまとめて取得できる構成であっても良い。
【0038】
例えば、コピーコンテナ221からスキャナ制御部204への送信は、図4(A)からソケット通信である。従って、その送信先の実体情報503は、ソケットへのパスを示す、例えば「/path/to/socket.sock」となる。またFAXコンテナ222からFAX制御部206への送信は、図4(A)から共有メモリである。従って、その送信先の実体情報503は、共有メモリのアドレスを示す。更に、リモートUIコンテナ224からプリント制御部205への送信は、図4(A)からメッセージキューである。従って、その送信先の実体情報503は、メッセージキューのキー情報(msgKey)を示す。
【0039】
図6は、実施形態1に係る画像形成装置101における、コンテナからホストプロセスへの通信を説明するフローチャートである。
【0040】
通信コンテナ202を介してコンテナからホストプロセスへ通信を行う場合、まずS601で送信元コンテナは、(送信元情報401+送信先情報402+送信したい実データ情報)を通信コンテナ202に送信する。これにより通信コンテナ202は、そのデータを受信する。尚、ここで送信元情報401を、このデータ構成に含めず、通信コンテナ202が通信を確立する際に、その送信元情報401を取得するようにしても良い。
【0041】
次にS602に進み通信コンテナ202は、S601で受信したデータに基づいて、通信方式変換テーブル303を参照して通信方式を決定する。
【0042】
次にS603に進み通信コンテナ202は、送信元情報401と送信先情報402とに基づいて、例えば図5の通信対象情報304を参照して送信先の実体情報503を取得する。そしてS604に進み通信コンテナ202は、S603で取得した送信先(ホストプロセス)の実体情報503に対応する宛先に対して通信データを送信する。こうしてコンテナからホストプロセスへの通信を実現することができる。
【0043】
図7は、実施形態1に係る画像形成装置101における、ホストプロセスからコンテナへの通信を説明するフローチャートである。
【0044】
通信コンテナ202を介してホストプロセスからコンテナへ通信を行う場合、まずS701で送信元プロセスは、(送信元情報401+送信先情報402+送信したい実データ情報)を通信コンテナ202に送信する。これにより通信コンテナ202は、そのデータを受信する。尚、ここで送信元情報401を、このデータ構成に含めず、通信コンテナ202が通信を確立する際に、その送信元情報401を取得するようにしても良い。
【0045】
次にS702に進み通信コンテナ202は、S701で受信したデータに基づいて、通信方式変換テーブル303を参照して通信方式を決定する。これは前述の図6のS602の処理と同じである。
【0046】
次にS703に進み通信コンテナ202は、送信元情報401と送信先情報402とに基づいて、例えば図5の通信対象情報304を参照して送信先(コンテナ)の実体情報503を取得する。そしてS704に進み通信コンテナ202は、S703で取得した通信対象コンテナの実体情報503に対応する宛先に対して通信データを送信する。こうしてホストプロセスからコンテナへの通信を実現することができる。
【0047】
図8は、実施形態1に係る画像形成装置101において、ユーザがリモートUIから画像形成装置101に保存されているデータをプリントする際の処理の流れを説明するシーケンス図である。
【0048】
ユーザが、コンピュータ119を用いて外部ネットワークから画像形成装置101にアクセスし、リモートUIApp(アプリ)219を利用している。この状態で、まずS801で、ユーザはコンピュータ119を用いてプリント操作を行う。これによりS802で、コンピュータ119はネットワークを介して画像形成装置101に対して操作情報を送信する。これによりS803で画像形成装置101のNIC118は、S802で送信された操作情報を受信する。そしてS803で、その受信した操作情報をネットワーク制御部209に通知する。
【0049】
次にS804でネットワーク制御部209は、その通知された操作情報を、リモートUIApp219に送信するためにデータを生成する。そしてS805でネットワーク制御部209は、通信コンテナ202に対して操作情報を送信する。尚、S804で生成されるデータの構成は、(送信元情報401+送信先情報402+送信したい実データ情報)である。具体的には、S804でネットワーク制御部209は、「ネットワーク制御部209のID+リモートUIコンテナ224のID+プリント操作情報、プリントデータの置き場」などを含むデータを生成する。前述のように送信元情報401については、通信コンテナ202がデータ構成に含めず、通信を確立する際に取得する構成であっても良い。またプロトコルについては、データ構成が含まれていればどのような形式であっても良い。
【0050】
次に通信コンテナ202は、S806で通信方式を決定する。この通信方式の決定は、通信方式変換テーブル303を参照して行われる。次にS807に進み通信コンテナ202は、宛先変換を行う。この宛先変換処理は、通信対象情報304を使用して行われる。具体的には、ネットワーク制御部209からリモートUIコンテナ224への通信方式はネットワーク通信であるため、通信対象情報304から、送信先のコンテナのIPアドレスや、コンテナIDなどを取得して宛先に設定する。
【0051】
その後S808で通信コンテナ202は、リモートUIApp219に対して操作情報を転送する。この操作情報は、S805で受信した操作情報である。
【0052】
次にS809でリモートUIApp219は、S808で受信した操作情報を解析する。そしてS810でリモートUIApp219は、プリントApp218に対してプリント情報を送信する。これによりS811でプリントApp218は、そのプリント情報を解釈する。そしてS812でプリントApp218は、通信コンテナ202と通信するためのデータを生成する。このデータの構成は、前述と同様に(送信元情報401+送信先情報402+送信したい実データ情報)を含む。具体的には、「プリントコンテナ223のID+プリント制御部205のプロセスID+プリント情報」などを含む。そしてS813でプリントApp218は、S812で作成したプリント制御情報を通信コンテナ202に対して送信する。
【0053】
これにより通信コンテナ202はS814で、通信方式を決定する。ここでは送信元がプリントコンテナ223で、送信先がプリント制御部205であるため、通信方式はソケット通信となる。そしてS815で宛先を変換する。具体的には、プリントコンテナ223からプリント制御部205への通信方式はソケット通信であるため、通信対象情報304から、送信先のプリント制御部205へのパスなどを取得して宛先に設定する。
【0054】
その後、S816で通信コンテナ202は、プリンタ制御部205に対してプリント制御情報を転送する。これによりプリンタ制御部215はS817で、ストレージ106に保存されているプリントデータを取り出す。そしてS818でプリンタ制御部205は、そのプリントデータに従ってプリントするようにプリンタ110を制御する。その結果、S819で、プリンタ110で形成された成果物をユーザに対して提供することができる。
【0055】
以上説明したように実施形態1によれば、組み込みアプリケーションを構築する際、複数のコンテナに対してホストマシンへのアクセス権をいたずらに付与しない。これにより、誤ったファイルの書き込みや、メモリのデータの破壊等の不具合の混入が抑制され、品質向上に寄与することができる。
【0056】
また通信の役割を集約できるため、プログラムの複雑化を防ぎ、管理性の向上に繋がる。さらにアクセス経路が限定されるため、プログラムのデバッグ観測性が向上するという効果がある。
【0057】
[実施形態2]
上述の実施形態1では、通信が確実に成立する形態を説明した。現実には動作中の状態次第で、対象プロセス又はコンテナが起動していない場合や、悪質なコードによりコンテナやプロセスがハックされる場合がある。従って、リトライ手段や対象外からのアクセスを防止する機構が含まれる構成であっても良い。
【0058】
図9は、実施形態2に係る画像形成装置101における、コンテナからホストプロセスへの通信処理を説明するフローチャートである。尚、図9において、前述の図6のフローチャートと同じ処理を実行するステップは同じ参照番号を付し、それらの説明を省略する。
【0059】
まずS901で通信の要である通信コンテナ202がrun状態(稼働状態)であるか否か判定する。ここでrun状態でないと判定したときはS902に進み、通信コンテナ202をrun(稼働)させか、又はrun制御を行っているプロセス、例えばコンテナ制御部203に通知してS901に進む。図9では、このステップを実行するのがコンテナである。よって、コンテナから他のコンテナをrunできる他の経路、例えばDockerであれば、Dockerデーモンdockerdとの対話のためのdocker.sockをマウントしておくようにしても良い。また或いは、コンテナ制御部203とだけ全てのコンテナが通信可能にしておくなどの構成が考えられる。
【0060】
S903では、送信先情報(ホストプロセス)が通信方式変換テーブル303に存在するか否か判定する。このとき通信方式変換テーブル303に存在しなければS907に進み、通信失敗を送信元のコンテナンに通知して、この処理を終了する。このステップは不正アクセスの防止に繋がりソフトウェアの品質向上に寄与する。
【0061】
またS903で、送信先情報が通信方式変換テーブル303に存在すると判定するとS904に進み、送信先プロセスが起動しているか否か判定する。ここで送信先プロセスが起動していないと判定するとS905に進み、その送信先プロセスをkick(起動)するか、或いはkick制御が可能なプロセスに通知してS904に進む。
【0062】
そしてS603,S604で、通信コンテナ202が、送信先の実体情報503を取得し、その取得した宛先に対して通信データを送信する。こうしてコンテナからホストプロセスへの通信を実現する。そしてS906に進み、通信が完了するのを待って通信成功を送信元のコンテナに通知する。これはS907の失敗と区別するためである。
【0063】
このようにコンテナからホストプロセスへの送信時、通信コンテナが起動していないときは、その起動を待って、コンテナが通信コンテナにデータを送信する。更に通信コンテナが、送信先のプロセスが起動していないときは、そのプロセスが起動するのを待ってデータを送信する。これにより、対象のプロセスが起動していないために、悪質なコードによりプロセスがハックされるのを防止できるという効果がある。
【0064】
図10は、実施形態2に係る画像形成装置101における、ホストプロセスからコンテナへの通信処理を説明するフローチャートである。尚、図10において、前述の図6図7、及び図9のフローチャートと同じ処理を実行するステップは同じ参照番号を付し、それらの説明を省略する。
【0065】
S1001で、送信先のコンテナが起動しているか否かを判定する。S1001で送信先のコンテナが起動していないと判定するとS1002に進み、その送信先コンテナをrun(起動)するか、或いはrun制御可能なプロセスに通知してS1001に進む。図10では、このステップを実行するのがホストプロセスであるため、コンテナ制御部203と通信する経路を持たせるなどが考えられる。そしてS1003では、送信元のホストプロセスに対して送信完了を通知する。一方、S1004では、送信元のホストプロセスに対して通信失敗を通知する。
【0066】
以上説明したように実施形態2によれば、前述の実施形態1に係る効果に加えて、送信先のプロセス又は送信先のコンテナが起動していない場合、そのプロセス又はコンテナを起動した後でデータ送信を行う。これにより、悪質なコードによりコンテナやプロセスがハックされるのを防止できるという効果がある。
【符号の説明】
【0067】
101…画像形成装置、202…通信コンテナ、301…通信方式変換部、302…宛先変換部、303…通信方式変換テーブル、304…通信対象情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10