投稿者

インターシステムズジャパン
記事 Toshihiko Minamoto · 4月 9 7m read

IRIS Community EditionのDockerイメージのフットプリントを削減する方法

インターシステムズ アイデア ポータル(InterSystems Ideas Portal)で最も多くの賛同を得た提案(74票)は、IRISの軽量バージョンを要望するものです。プラットフォームは強力なデータエンジンに成長していますが、多くのプロジェクトではSQLデータベース機能のみが必要とされています。本記事では、コアなデータベース機能にのみ焦点を当てた非公式なコンパクトなIRIS Community Editionイメージを構築する方法を示し、イメージサイズを80%以上削減する方法を説明します。

⚠️ Disclaimer

このプロジェクトは、InterSystems IRIS Community Editionの非公式な実験的なイメージを生成します。

  • InterSystemsによるサポートまたは推奨はされていません。
  • 使用は自己責任です。これらの変更により、プラットフォームの中核機能が削除され、ツールやAPI、想定される動作との互換性が損なわれる場合があります。
  • 確証または保証 なしに生は、産用途への適合性を含みます。
  • 上級ユーザーによる教育および実験目的のみに供するものです。

Lightweight IRISと言う軽量バージョンが選ばれる理由

現在のIRISは豊富な機能(相互運用性、分析、機械学習、システム管理など)を備えておりますが、多くのプロジェクトではその中核となるSQL機能のみが必要とされる場合が少なくありません。公式のCommunity Edition Dockerイメージのサイズはおおよそ以下の通りです:

  • ディスク使用量: 3.5~3.8 GB
  • 圧縮後のサイズ: 約1.1 GB

IRIS Lightでは、それを以下のように簡略化します:

  • ディスク使用量: 575~3583 MB
  • 圧縮後のサイズ: 約144~148 MB

これにより、以下に最適です:

  • マイクロサービスまたはコンテナ化されたSQLの使用
  • CIパイプラインの起動とプル時間の短縮
  • 水平スケーリングにおいて、完全な機能が不要な場合

イメージのフットプリント比較

対照的に、このアプローチで作成されたストリップダウンされた「IRIS Light」イメージは、約8分の1の圧縮サイズとなります:

$ docker images containers.intersystems.com/intersystems/iris-community
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE
containers.intersystems.com/intersystems/iris-community:latest-cd        14c6314edcc5        3.8GB         1.17GB
containers.intersystems.com/intersystems/iris-community:latest-em        4c25627895eb       3.52GB         1.01GB
containers.intersystems.com/intersystems/iris-community:latest-preview   424e87dbb7d8       3.81GB         1.17GB

By contrast, the stripped-down "IRIS Light" image created via this approach is approximately 8× smaller in compressed size:

$ docker images caretdev/iris-community-light
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE
caretdev/iris-community-light:latest-cd                                  ce5c2d7fa173        583MB          148MB
caretdev/iris-community-light:latest-em                                  fd33a51a0e81        575MB          144MB
caretdev/iris-community-light:latest-preview                             f10c714117da        583MB          148MB

 

Diveによるイメージレイヤーの分析

IRIS Community Editionイメージを理解し最適化するため、以下のURLを検証しました:dive。これらはDockerイメージの層を検査し、非効率性を特定するためのツールです。

最適化前で:Vanilla IRIS Community イメージ

下記のスクリーンショットは、公式のiris-community:latest-em イメージの分析結果を示しております。 最大規模の層の一つは 882 MBに達し、 Java、システムライブラリ、およびSQLのみのワークロードに厳密には必要とされないその他のランタイムコンポーネントを含んでおります。

そして最大のものは1.5GBで、主にIRIS本体が含まれています。/p>

最適化後で:IRIS Light イメージ

不要なパッケージを削除し、内部IRISストレージを圧縮することで、最終的なイメージは320MBの1層に収まり、大幅なサイズ削減を実現しました。

IRIS Lightイメージはどのようにつくられるのか

このプロセスは、標準のiris-community:latest-emベースから始まる、マルチステージのDockerfileに従います。主なステップは次のとおりです:

1. 構成内のコンポーネントを無効にする

  • iris.cpfにて、WebServer、System Management Portal、および Ensemble を停止します。

2. IRIS内部から未使用パッケージを削除する

IRISセッション内でのObjectScriptの使用:

  • 以下のパッケージを削除すること: %SYS.ML, DeepSee, Interop, OAuth2, Net, Report
  • 必須のシステム・ライブラリのみを残すこと(例: %Library, %SQL, %SYSTEM).

3. スタブクラス

必要となる場合、一部必須のクラス(例:起動時など)は、最小限のノーオペレーション実装に置き換えられます。

4. データベースのクリーンアップ

主要データベースをコンパクト化し、デフラグメント化してサイズを削減します。

5. ファイルシステムのクリーンアップ

以下の項目を削除すること:

  • 開発ツール
  • WebスタックおよびCSP
  • 相互運用性ライブラリ
  • Python/Javaサポート
  • ロケールデータ、ログ、テンポラリ・ファイル、ODBC/JDBCドライバー

6. 掃除内容を新しいUbuntuベースにコピーする

最終的なイメージはubuntu:24.04をベースに構築されており、必要なファイルとツールのみを含み、PID 1としてtiniを使用しております。

結果

結果のイメージは、おおよそ以下のようになります:

  • 圧縮サイズ: 約144~148 MB
  • 非圧縮時のディスク使用量: 約570~580 MB
  • SQL機能sqlalchemy-iris テストスイートによる検証済み (619件通過、912件スキップ、0件失敗)

これにより、以下の用途に非常に適しています:

  • 最小限のSQLサービス
  • 軽量な開発/テスト用コンテナ
  • 組み込みまたはエッジ展開シナリオ
  • ステートレスな水平スケーラブルアーキテクチャ

重要な制限にてういて

  • 管理ポータルおよびWebサービスは含まれません CSP/Webスタック全体が削除されます。
  • 相互運用性、DeepSee、iKnow、機械学習は含まれません これらのサブシステムは明示的に削除されます。
  • 内部サポートおよび外部サポートは提供されません InterSystemsはこのイメージについていかなる保証もいたしません。互換性およびアップグレード動作は未定義となります。
  • 将来のIRISバージョンでは起動要件が変更される場合があります 削除されたパッケージやファイルへの内部依存関係により、将来のバージョンがこのアプローチで動作しなくなる可能性があります。

結論

IRIS Lightは、InterSystems IRIS向けの効率的でコミュニティ主導のDockerイメージであり、データベース中心のユースケースにおいてサイズと複雑さを大幅に削減します。公式にはサポートされていませんが、実験やラピッドプロトタイピングの基盤を提供し、完全なIRIS機能が不要な場面において有用です。

ユーザーの皆様は、Dockerfile を確認し、ご自身のニーズに合わせて適宜調整し、コアプラットフォーム機能の削除に伴う影響を理解されることをおすすめします。

ユーザーの皆様は、ご自身の運用上およびセキュリティ上の制約に合わせて、Dockerfileをさらにカスタマイズされることをおすすめします。ビルドプロセス全体は、公開されているDockerベースイメージのみを使用して、透明性が高く再現可能です。


プロジェクトは次のリンクからご利用いただけます: here 

IRIS Community LightのDockerイメージは 次のリンクからご利用いただけます: Docker Hub