InterSystems IRIS の基礎 : コンテナの実行
InterSystems IRIS コンテナを起動できるよう、このドキュメントでは、以下を含む基本的な手順を示します。
これらの手順などを扱う簡単なオンラインの実践演習は、"Deploying and Customizing InterSystems IRIS ContainersOpens in a new tab" をお試しください。InterSystems IRIS コンテナの概要および InterSystems IRIS コンテナ・イメージおよびインターシステムズ提供のその他のイメージの使用法の詳細は、"コンテナ内でのインターシステムズ製品の実行" (このドキュメントには、このページへの多数のリンクが含まれます) およびこのドキュメント末尾の "コンテナ内の InterSystems IRIS の詳細" に示すその他のリソースを参照してください。
ここに含まれるコマンドによっては、root 特権が必要なものがあります。
プラットフォームの選択
この実践練習の手順は、Linux 環境向けに作成されており、Linux 環境で最も簡単に使用することができます。Linux システムが利用可能でない場合、Google Cloud Platform (GCP)、Amazon Web Services (AWS)、Microsoft Azure などのパブリック・クラウド・プロバイダでアカウントを作成し、Docker をインストールした状態で CentOS VM をプロビジョニングすることをお勧めします。
必要に応じて、この手順は、Windows または macOS に適用できます。Windows の場合、[管理者として実行] から開くコマンド・プロンプトまたは Windows PowerShell ウィンドウで手順を実行できます。PowerShell ISE は使用しないでください。Docker for Windows の詳細は、InterSystems Developer Community の "Using InterSystems IRIS Containers with Docker for WindowsOpens in a new tab" および Docker のドキュメントOpens in a new tabを参照してください。
コンテナ・ランタイム・エンジンのインストール
インターシステムズのコンテナを導入するコンテナ・ランタイム・エンジン (Docker や Podman など) をサーバにインストールします。このドキュメントで示している具体的な説明や手順は、Docker エンジンでの使用を対象としています。
インターシステムズのコンテナ・イメージは Open Container Initiative (OCIOpens in a new tab) の仕様に準拠しているため、オンプレミスとパブリック・クラウドの両方において、Linux ベースのオペレーティング・システム上の任意の OCI 準拠ランタイム・エンジンでサポートされます。
InterSystems IRIS イメージのダウンロード
インターシステムズ提供の InterSystems IRIS イメージをこの実践練習で使用できるようにするには、作業しているシステムにイメージをダウンロードする必要があります。イメージの入手方法はいくつかありますが、以下では、それぞれの方法で入手して、使用できる、あるいは使用できる可能性のある InterSystems IRIS イメージについて説明しています。
-
InterSystems Container Registry (ICR) から InterSystems IRIS Community Edition イメージを入手して使用できます。ICR には、インターシステムズから入手可能なすべてのイメージのリポジトリが含まれています。ICR の詳細は、"InterSystems Container Registry の使用Opens in a new tab" を参照してください。Docker HubOpens in a new tab から Community Edition のイメージをダウンロードすることもできます。
InterSystems IRIS Community Edition には 13 か月分の無料の組み込みライセンスが付属しています (これにはいくつかの機能制限があります)。この実践練習で Community Edition を使用する場合、次の手順 ("外部ストレージ位置へのライセンス・キーの追加") で説明しているように、ライセンス・キーを指定する必要はありません。詳細は、"InterSystems IRIS の導入と操作" の "独自のシステムへの InterSystems IRIS Community Edition の導入" を参照してください。
Note:別のオプションとして、実行中の InterSystems IRIS Community Edition コンテナをホストするクラウド・ノードを GCP、AWS、または Azure 上にプロビジョニングする方法があります。"クラウド・ノードへの Community Edition の導入" を参照してください。
-
インターシステムズのお客様は、リリースされている InterSystems IRIS イメージを InterSystems Container Registry (ICR) から取得して使用できます。"InterSystems Container Registry の使用Opens in a new tab" では、ICR Web ポータルOpens in a new tabで入手できる InterSystems IRIS イメージを参照したり、WRC 認証情報を使用してレジストリに対して認証し、イメージをダウンロードできるようにする方法について説明しています。
-
1 つ以上の InterSystems IRIS イメージが含まれるプライベートのイメージ・レジストリが組織で使用されていることがあります。その場合は、レジストリの場所、必要なイメージのリポジトリとタグ、およびアクセスに必要な認証情報を取得します。
ダウンロード元のレジストリおよび必要に応じて認証情報を確認した後、"コンテナ内でのインターシステムズ製品の実行" の "InterSystems IRIS イメージのダウンロード" で、InterSystems IRIS イメージをダウンロードする手順を参照してください。
わかりやすくするために、実践練習では、イメージ intersystems/iris:latest-em を使用して作業することを前提としています。
外部ストレージ位置へのライセンス・キーの追加
あらゆる InterSystems IRIS インスタンスと同様に、コンテナ内で実行されるインスタンスにもライセンス・キー (通常は iris.key) が必要です。
ICR または Docker Hub から入手できる InterSystems IRIS Community Edition イメージ (前のセクションの説明のとおり) には、無料の組み込み一時ライセンスが付属しています。ただし、通常、ライセンス・キーは InterSystems IRIS コンテナ・イメージに含まれておらず、含めることもできません。代わりに、コンテナの起動後にコンテナにコピーして、そこで実行される InterSystems IRIS インスタンスに対して有効にする必要があります。iris-main プログラムはこのためのオプションを備えていますが、外部ボリュームとしてマウントするストレージ位置にライセンス・キーを配置する必要があります。このオプションを使用する手順は次のセクションで示しています。InterSystems IRIS コンテナのライセンス・キーの詳細は、"InterSystems IRIS コンテナのライセンス・キー" を参照してください。
InterSystems IRIS ライセンス・キー・ファイル iris.key を外部ストレージ位置にコピーします。
InterSystems IRIS イメージからのコンテナの実行
InterSystems IRIS イメージをローカル・マシンで使用できるようにし、外部ストレージ位置を特定してそこにライセンス・キーを配置したら、docker run コマンドを使用してコンテナを作成および起動する準備が整います。次に示すように、docker run コマンドは実際には 3 つの個別のコマンドを組み合わせたものです。
-
docker pull — イメージがまだローカルに存在していない場合は、イメージをダウンロードします。
-
docker create — イメージからコンテナを作成します。
-
docker start — コンテナを起動します。
これらのコマンドそれぞれは、さまざまなコンテキストでさまざまな目的のために個別に使用できます。詳細は、Docker ドキュメンテーションの "Docker run referenceOpens in a new tab" を参照してください。
サンプルの docker run コマンドは以下のとおりです。このコマンドのすべてのオプションについては、付随するテキストで説明しています。docker run コマンドのオプションは、イメージ指定の前のコマンド行に表示されますが、InterSystems iris-main プログラムはイメージ指定の後に表示されることに注意してください。(このサンプルでは、docker run の一部である pull コマンドは不要です。これは、使用する iris イメージを既にダウンロード済みであるためです)。
docker run --name iris
--detach
--publish 1972:1972
--volume /nethome/pmartinez/iris_external:/external
intersystems/iris:latest-em
--key /external/iris.key
-
--name container_name
コンテナの名前を指定します。これは、他の Docker コマンドで対象のコンテナを参照する際に使用できます (例えば、コンテナを停止する場合の docker stop container_name)。
-
--detach
コンテナをバックグラウンドで実行します (また、コンテナの一意の ID を表示します)。
-
--publish host_port:container_port
コンテナ内のポートをホスト上のポートに公開して、コンテナ外部 (ホスト上または他のマシン上) のエンティティからそのコンテナで実行されているプログラムにアクセスできるようにします。例えば、アプリケーション接続やデータ取り込みなどに使用される InterSystems IRIS インスタンスのスーパーサーバ・ポートは 1972 です。コンテナ内のこのポートがホスト上のポートに公開されると、ホストのポートを使用してインスタンスのスーパーサーバにアクセスできるようになります。例えば、この JDBC 接続文字列では次のようになります。jdbc:IRIS://container-host:1972/namespace
--volume external_storage_path:internal_volume
コンテナからアクセス可能な外部ストレージ位置をコンテナ内のストレージ・ボリュームとしてマウントします。この方法でマウントできるストレージ位置および必要になる可能性のある Docker 構成の詳細は、Docker ドキュメンテーションの "VolumesOpens in a new tab" を参照してください。
Important:この目的でマウントおよび指定するホストのファイル・システムの場所は、ユーザ 51773 によって書き込み可能である必要があります。(これを有効にするには、多くの場合、root 特権が必要です。)
InterSystems IRIS コンテナに NFS の場所を外部ボリュームとしてマウントすることはサポートされていません。
-
repository/image:tag
プルされ、コンテナの作成に使用されるイメージを指定します ("InterSystems IRIS イメージのダウンロード" を参照)。docker images コマンドを使用して、使用可能なイメージをリスト表示し、必ず適切なイメージを指定してください。
-
--key license_key_path
コンテナ内のインスタンスにインストールされる InterSystems IRIS ライセンス・キーを識別する iris-main オプションです。この位置はマウント・ボリューム上である必要があります ("外部ストレージ位置へのライセンス・キーの追加" を参照)。コンテナが実行中の場合、ステージングされるライセンス・キーの変更を iris-main が継続的に監視します。変更が検出された場合は、現在の /mgr/ ディレクトリにコピーされ、有効化されます。
前述のサンプルと説明を使用して独自の docker run コマンドを作成し、それをコマンド行で実行します。そのコマンドが完了したら、docker ps コマンドを使用して、リスト内のコンテナのステータスが Up になっていることを確認します。
$ docker run --name iris --detach --publish 1972:1972
--volume /nethome/pmartinez/iris_external:/external
intersystems/iris:latest-em
--key /external/iris.key
426d4a511d6746d89ec2a24cf93b29aa546ea696b479a52210d37da4c6d04883
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
426d4a511d67 intersystems/iris:latest-em "/iris-main --key ..." 5 seconds ago Up 3 seconds
PORTS NAMES
0.0.0.0:1972->1972/tcp iris
InterSystems IRIS Community Edition イメージ ("InterSystems IRIS イメージのダウンロード" を参照) には無料の組み込みライセンスが付属しているため、--key オプションは不要です。
イメージがローカルには存在しないが、組織のリポジトリにある場合、コンテナを作成して起動する前に Docker がイメージをプル (ダウンロード) します。
例で示しているように、コンテナの作成後、Docker は UUID ロング識別子を出力します。先頭の 12 文字によって UUID ショート識別子が構成されます。これは、例えば docker ps コマンドからの出力など、他の出力でのコンテナの識別に使用されます。
インスタンスの管理ポータルへのアクセス
"コンテナ内でのインターシステムズ製品の実行" の "Web ゲートウェイ・コンテナを使用した Web アクセス" で詳細に説明しているように、InterSystems IRIS 管理ポータルは組み込みの Web アプリケーションであるため、これをブラウザでロードするには、Web サーバおよびインターシステムズの Web ゲートウェイが必要です。ただし、複数の InterSystems IRIS コンテナとやり取りするよう構成されている単一の Web ゲートウェイ・インスタンスでは、すべてのインスタンスに共通するアプリケーションの要求を特定のインスタンスに転送することはできません。
管理ポータルからコンテナ化された InterSystems IRIS インスタンスにアクセスできるようにする簡単な方法の 1 つとして、各 InterSystems IRIS コンテナに専用の Web ゲートウェイ・コンテナ (Web サーバも含む) を実行する方法があります。専用の Web ゲートウェイ・コンテナは、ペアになっている InterSystems IRIS コンテナとのみやり取りするよう構成されます。これは、Web サーバ層が必要な導入の場合、さらに Web ゲートウェイ・コンテナを追加する必要があります。専用の Web ゲートウェイ・コンテナおよび Web サーバ・ノードの Web ゲートウェイ・コンテナを実行する方法、および管理ポータルからコンテナ化された InterSystems IRIS インスタンスにアクセスできるようにするその他の方法に関する詳細と手順は、"Web ゲートウェイ・コンテナの実行オプション" を参照してください。
永続的な %SYS を使用したインスタンス固有データの保存
コンテナ化されたアプリケーションはホスト環境から分離されているので、永続データを書き込みません。コンテナが削除され、新しいコンテナに置き換えられるときに、アプリケーションがコンテナ内で書き込んだ内容が失われるためです。このため、コンテナ化されたアプリケーションの導入で重要な点は、コンテナの外部にデータを保管し、他のコンテナや後続のコンテナがそのデータを使用できるようにすることです。
永続的な %SYS 機能を使用すると、インスタンス固有のデータ (ユーザ定義、監査レコード、ログ・ファイル、ジャーナル・ファイル、WIJ ファイルなど) の永続ストレージが可能になり、コンテナ内での InterSystems IRIS の実行時に、単一インスタンスを時間の経過と共に複数のコンテナで順番に実行できるようになります。例えば、永続的な %SYS を使用して InterSystems IRIS コンテナを実行すると、元のコンテナを停止して、元のコンテナで作成されたインスタンス固有のデータを使用する新しいコンテナを実行することによって、インスタンスをアップグレードすることができます。
前のセクションで実行したコンテナを永続的な %SYS で実行するには、docker run コマンド行に 1 つの変更を加えます。ISC_DATA_DIRECTORY 環境変数を使用して、マウントされた外部ボリュームで作成される永続的な %SYS ディレクトリを指定します。コンテナを実行する際は、このボリュームを /external と呼ぶため、ここで作成される永続的な %SYS ディレクトリを durable と呼び、前のセクションのコマンド行を以下のように変更しましょう。
$ docker run --name iris-durable --detach --publish 1973:1972
--volume /nethome/pmartinez/iris_external:/external
--env ISC_DATA_DIRECTORY=/external/durable
intersystems/iris:latest-em
--key /external/iris.key
696b479a52210d37da4c6d04883426d4a511d6746d89ec2a24cf93b29aa546ea
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
696b479a5221 intersystems/iris:latest-em "/iris-main --key ..." 5 seconds ago Up 3 seconds
PORTS NAMES
0.0.0.0:1972->1972/tcp iris-durable
上のコマンド行は、前のコマンド行で公開されているホスト・ポート 1972 を 1973 に変更し、コンテナの名前を iris-durable に変更します。ただし、最初に以下のコマンドで前のコンテナを停止して削除すれば、前と同じようにポート 1972 と名前 iris を使用することはできます。
$ docker stop iris
iris
$ docker rm iris
iris
コンテナ内の InterSystems IRIS インスタンスのインスタンス固有データを調べるには、ホスト・ファイル・システム上のマウントされた外部ボリュームの永続的な %SYS に移動します。以下に例を示します。
$ cd /nethome/pmartinez/iris_external/durable
$ ls -l
total 30
drwxrwxr-x 7 irisowner irisowner 4096 Jan 19 10:03 csp
drwxr-xr-x 3 irisowner irisowner 4096 Jan 19 10:03 dist
drwxrwxr-x 5 irisowner irisowner 4096 Jan 19 10:03 httpd
-rw-rw-r-- 1 irisowner irisowner 12713 Jan 19 10:04 iris.cpf
-rwxr-xr-x 1 irisowner irisowner 9527 Jan 19 10:04 _LastGood_.cpf
drwx------ 1 irisowner irisowner 4096 Jan 30 18:27 mgr
永続的な %SYS でのコンテナの実行の詳細は "永続インスタンス・データを保存するための永続的な %SYS"、アップグレードについては "InterSystems IRIS コンテナのアップグレード" を参照してください。
コンテナ内の InterSystems IRIS の詳細
コンテナおよび InterSystems IRIS の提供内容について引き続き調べるには、以下のドキュメントとリソースを使用してください。
-
Docker Containers and InterSystems IRISOpens in a new tab (ビデオ)
-
Deploying and Customizing InterSystems IRIS ContainersOpens in a new tab (前述のビデオと実践演習)
-
コンテナ内でのインターシステムズ製品の実行 (完全なドキュメント)
-
InterSystems Developer Community の記事
-
InterSystems Kubernetes Operator の使用Opens in a new tab — InterSystems IRIS クラスタを表す Kubernetes カスタム・リソースを定義する InterSystems Kubernetes Operator (IKO) を使用して、IKO がインストールされている任意の Kubernetes プラットフォームに、シャード・クラスタ、分散キャッシュ・クラスタ、またはスタンドアロン・インスタンスを導入します。