2018年2月1日に、IBM Notes/Domino 9.0.1 Feature Pack 10 がリリースされました。
新機能の全容は、
IBM Notes®/Domino® 9.0.1 Feature Pack 10 Release Notice
に記載されていますので、そちらを参照してください。
(英語。現時点では日本語に翻訳された公式な情報は公開されていません。)
なお、FP10のインストールに関しては既に不具合情報がありますので、事前に上記リリースノートのKnown Issues を確認してください。
XPages.jp では、FP10の新機能の検証を進めていく予定ですが、手始めにDocker support に着目し、実際の検証を行ってみました。
詳細な手順などは、まとまった段階で公開を検討しますが、今回はDocker image を構築する際のポイントについてお伝えしたいと思います。
Docker support の詳細は、下記に記載されていますが、
IBM Domino 9.0.1 FP10 announces support for running Domino on Docker
その中でも
- 現時点では、IBMからは Docker image が提供されないこと(=自分で作成する必要があります)
- サポート対象OSは、Red Hat Enterprise Linux 7.4 または Windows 2016 であること
には、留意してください。
Docker とは
VMWare や Hyper-V などの仮想環境を、手軽な開発環境としては勿論、実運用環境として利用している企業も多いと思います。Docker とは、コンテナ型の仮想環境を提供するソフトウェアです。前述の仮想環境が OS を丸ごとインストールする完全仮想化なのに対して、コンテナ型は他のプロセスから分離した実行環境でアプリケーションを動作させるというものです。そのため、無駄になるリソース(メモリ、ディスク)が少なく、起動が速いという特徴があります。構築作業が自動化できる事に加え、現在では様々な実行環境イメージが提供されるようになり、クラウド・オンプレミス共に普及しつつあります。
Windows 環境への Docker のインストール
今回は、検証目的のため、環境構築が容易な Windows 環境で実施しました。
はじめに、Docker の実行環境を用意するため、Docker for Windows をインストールします。
Docker for Windows
Docker は、Docker 社から有償の Enterprise Edition と 無償の Community Edition が提供されています。Docker for Windows の実行には下記の要件が必要です。
- 64bit版の Windows 10(バージョン1607 Anniversary Update、ビルド14393以降)、ProもしくはEnterprise/Educationエディション
- Hyper-V が利用できること(BIOSで Virtualization 機能が有効化されていること)
Docker は元々 Linux のコンテナ機能を利用したものなので、Docker コンテナ上で動くのは Linux のプログラムです。Docker for Windows と似たものに、Windows コンテナがありますが、Windows コンテナで動くのは Windows のプログラムであり、両社は全くの別物です。
Docker コンテナへのDomino のインストール
Docker for Windows をインストールすると、サーバ(コンテナ実行用のエンジン)とクライアント(管理ツール)のモジュールが導入されます。管理用の docker.exe コマンドが使用可能になり、対話的に実行する場合は、このコマンドに引数を付けて指示を行う事になります。
始めに、ベースとなる OS 部分を準備します。今回は公開されている CentOS の Docker image をダウンロードして、利用しました。
Docker.exe コマンドで、CentOS を起動し、必要なユーザー登録などを済ませた後、Domino サーバーをインストールします。Docker コンテナ上で動かせるのは Linux のプログラムですから、インストールするのは Linux 版の Domino サーバーです。
Docker コンテナの中では、ファイルシステムは書き込み禁止になっています。インストールやカスタマイズなどで、後から書き込まれたファイルは、差分の形で一時的に保存されます。差分は適宜コミットすることにより、新しいDocker イメージとして保存することができます。このようにして作成された Docker イメージは、別の Docker ホストでも動かす事ができるのです。
Domino のセットアップ
続いて Domino サーバーのセットアップを行います。その際、Notes データディレクトリは、Docker コンテナの中に作成せずに、ホストのディレクトリ(=今回の場合は、Windows 上の任意のディレクトリ)をマウントして、そこに作成します。Domino サーバーのプログラム類は Docker コンテナの中に、Notes データディレクトリはホストのファイルシステムに分けるのは、前者は更新がなく、後者は更新があるからです。更新される Notes データディレクトリの書き込み先がホストになるので、コミットしなくても、内容が消える事はありません。
終わりに
今回は初めての Docker 環境の検証だったので、試行錯誤しながら、対話的に環境構築を行いました。途中、ファイルシステムのコミットを行わなかったために、作業が消えてしまった事もありました。
新しい環境に対して、手動で行ったインストールやカスタマイズを再度適用するのは現実的ではありません。Dockerfile というスクリプト機能を利用すると、一連の作業を自動化することができます。
また、時間の関係で、Feature Pack の適用まで至りませんでしたが、Fix Pack や Feature Pack を適用する度に、コミットし新しい Docker イメージを作成しておけば、実行環境の切り替えも容易にできるようになります。
これらの課題を整理しつつ、さらに検証を進めたいと思います。