IBM Db2 REST サービスをpodmanで動かす


Db2にはRESTサービスでアクセスできる仕組みがあります。 IBM Db2 REST サービスはコンテナイメージで提供されているので、Docker(もちろんpodmanもですが)やKubenates, Openshift等のコンテナ環境で動作させる必要があります。

Db2のマニュアルにはDocker前提のセットアップ方法しか載っていません。なのでDokerの場合はDb2のマニュアル通りに実施すれば(たぶん)OKです。

Docker Desktopはご存知のようにちょっと大きめの会社に対して有償になりましたので、有償化対象の会社のPCでちょっと(無償で!)試してみたい! という場合は、別の無償で使えるコンテナエンジンで動かす必要があります。

当記事は Db2ドキュメントの「IBM Cloud Container Registry からの IBM Db2 REST サービスのダウンロード」の手順のpodman版です。IBM Db2 REST サービスをpodmanで動かす手順について説明します。Macで確認しました。

尚、ここではpodmanのMacへの導入方法は記載しませんが、podman, Mac, 導入あたりでググれば、手順はでてきます。

1. 前準備

1-1: IBM Cloudのアカウントの準備

イメージがIBM Cloud Container Registry(icr.io)にあるので、IBM Cloudのアカウントでのログインが必要です。
IBM Cloudのアカウントをお持ちで無い場合は、作成をお願いします。クレジットカード情報の登録が必要です。

1-2: APIKEYの取得

以下を参考にIBM Cloud APIKEYを取得しておいてください。

2. IBM Cloud Container Registry(icr.io)へのpodmanでのログイン

ちなみにここがpodman独特の部分です。他はdockerコマンドをpodmanに置き換えるだけでたぶん動作します。
以下のコマンドでIBM Cloud Container Registry(icr.io)へのpodmanへログインします

podman login icr.io -u iamapikey -p <1-2で取得したAPIYKEY>

実行例

$ podman login us.icr.io -u iamapikey -p abcd_efg1hijk-xxxxxxxxxxxx-XX-XXXXXX
Login Succeeded!

3. Db2 REST サービス・コンテナー・イメージの取得

以下のコマンドを実行します。

podman pull icr.io/obs/hdm/db2rest:latest-amd64

取得できているか、以下のコマンドで確認します。

podman images

実行例:

$ podman images
REPOSITORY                        TAG           IMAGE ID      CREATED      SIZE
localhost/db2jupyter              latest        809ebfe7b284  6 days ago   3.58 GB
docker.io/jupyter/scipy-notebook  python-3.9.7  4a1360d27048  6 days ago   3.07 GB
icr.io/obs/hdm/db2rest            latest-amd64  43d504e56e41  2 weeks ago  330 MB

icr.io/obs/hdm/db2restのイメージがあればOKです。

4. Db2 REST サービス・コンテナー・イメージの起動

とりえあずバックグラウンドで起動させます。
ライセンス条項は自動acceptとしています。ライセンス条項を読んでacceptしたい場合は、LICENSE=acceptLICENSE=viewに変更してください。

SSL接続必須の設定で起動(通常):

podman run -d -p 50050:50050 -e LICENSE=accept --name=db2rest icr.io/obs/hdm/db2rest:latest-amd64

デフォルトはアクセスにSSL必須です。しかしデフォルトの自己証明書はブラウザーによっては受け付けてくれなかったり(ChromeはNG)、curlコマンドの場合は--insecureオプションが必要です。
正しい証明書を設定したい場合は以下の手順に従ってpodman runしてみてください(未確認)。
IBM Db2 REST サーバーの TLS 証明書の指定

SSL接続なしの設定で起動:

学習用やテストなのでSSL不要、APIドキュメントだけみるのでSSL不要、という場合は、podman runの際に
-e DB2REST_USE_HTTP=true
をつけて起動すると、SSLなしの接続が可能になります( 逆にSSLありでは接続できませんので注意してください)。

podman run -d  -p 50050:50050 -e LICENSE=accept -e DB2REST_USE_HTTP=true --name=db2rest icr.io/obs/hdm/db2rest:latest-amd64

尚、上記コマンドの前にすでにdb2restコンテナーを起動中の場合は、一旦コンテナー停止して削除してから実行してください

podman stop db2rest
podman rm db2rest

-e DB2REST_USE_HTTP=trueをつけて起動すると、Chromeでもhttp://localhost:50050/docsでアクセスしてREST APIのAPIドキュメントが参照できます。

その他詳細はDb2マニュアル
REST エンドポイント
を参照してください。
基本Dockerコマンドで書かれている部分はpodmanに置き換えれば大丈夫な場合が多いです。

5. まとめ

Db2 REST サービスは別途コンテナ環境に導入・設定が必要です。マニュアルにはDockerでの導入しか記載されていませんが、podman、OpenShiftなど標準的なコンテナ環境で動作しますので、基本Dockerコマンドを環境特有のコマンドに置き換えてやってみてください。
Db2 REST API v1のドキュメントはlocalhost:50050/docsにブラウザーでアクセスすることで参照可能です。インターネット上にはこのv1のDb2 REST APIのドキュメントはないようです(v4はありますがDb2 on Cloud用です)。

以上です。