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 イメージを作成しておけば、実行環境の切り替えも容易にできるようになります。

 

これらの課題を整理しつつ、さらに検証を進めたいと思います。