IBM Db2 Warehouse で Docker コマンドをセキュアにリモートから呼び出せるようにする (Linux)

デフォルトでは、一部の Docker エンジンは UNIX ソケットを listen するように構成されます。しかし、TCP/IP ポートを使用して listen するようにエンジンを再構成できます。そうすると、Docker CLI または Docker API (docker-py) を使用して、ネットワーク経由で Docker コマンドを送信し、リモートの Db2® Warehouse ノード上で実行することができます。

コマンドのセキュアなリモート呼び出しをサポートするために、Db2 Warehouse には setup_docker_remote.sh スクリプトが用意されています。このスクリプトは、セキュアなリモート通信のために必要な CA 証明書およびサーバーとクライアントの TLS 証明書をセットアップします。 また、このスクリプトは、簡単に TLS で Docker コマンドをリモートから呼び出せる /usr/bin/docker_remote コマンドをインストールします。

始める前に

Db2 Warehouse コンテナーおよびサービスを停止します。IBM Db2 Warehouse の停止を参照してください。

手順

  1. コンテナーにある Db2 Warehouse Orchestrator ツールを使用する場合は、以下のサブステップを実行します。
    1. ヘッド・ノード・ホストで、以下の該当するコマンドを発行して、コンテナーに含まれる Db2 Warehouse Orchestrator スクリプトをコピーします。
      • IBM® POWER® LE ハードウェア用のコンテナーの場合:
        docker run --rm --entrypoint cat store/ibmcorp/db2wh_ee:v3.9.0-db2wh-ppcle /tmp/db2wh_host_tools.zip >  path_on_host /db2wh_host_tools.zip 
      • IBM z Systems® ハードウェアのコンテナーの場合:
        docker run --rm --entrypoint cat store/ibmcorp/db2wh_ee:v3.9.0-db2wh-s390x /tmp/db2wh_host_tools.zip >  path_on_host /db2wh_host_tools.zip 
      • x86 ハードウェアのコンテナーの場合:
        docker run --rm --entrypoint cat store/ibmcorp/db2wh_ee:v3.9.0-db2wh-linux /tmp/db2wh_host_tools.zip >  path_on_host /db2wh_host_tools.zip 
    2. ヘッド・ノード・ホストで、db2wh_host_tools.zip ファイルを使用したい場所に解凍します。
  2. IBM GitHub リポジトリーにある Db2 Warehouse Orchestrator ツールを使用する場合は、各ノード・ホストで以下のコマンドを発行します。
    1. 次のコマンドを発行します。
      wget https://github.com/IBM/db2warehouse-tools/archive/master.zip -O db2warehouse-tools-master.zip
    2. 次のコマンドを発行します。
      unzip db2warehouse-tools-master.zip
    3. 次のコマンドを発行します。
      cd db2warehouse-tools-master
  3. setup_docker_remote.sh スクリプトを /mnt/clusterfs フォルダーに移動します。
  4. 次のコマンドを発行して、スクリプトを実行可能にします。
    chmod +x path_to_script/setup_docker_remote.sh 
  5. Docker コマンドをリモート実行するすべてのノードで、以下のようにスクリプトを実行します。
    path_to_script/setup_docker_remote.sh --cert-path "path" [--host hostname] [-h|--help] 
    ここで、
    • --cert-path "path" には、クライアントの TLS 証明書を保存する共有ファイル・システム・パス (慣例的に /mnt/clusterfs) を指定します。共有ファイル・システム・パスを指定すると、Db2 Warehouse クラスター内のすべてのノードから証明書にアクセスできます。
    • --host hostname は、Docker エンジンで認証されるようにするためのホスト名または IP アドレスを指定します。デフォルトでは、setup_docker_remote.sh スクリプトは TLS 証明書を生成し、その証明書を使用した localhost と 127.0.0.1 からの認証、および、ホストの完全修飾ドメイン名、短縮名、または IP アドレスからの認証を可能にします。しかし、内部 (ファブリック・ネットワーク) IP アドレスなどの追加のホスト名や IP アドレスを 1 つ以上指定して、TLS で Docker エンジンから認証されるようにすることができます。複数のホスト名または IP アドレスがある場合は、コンマ区切りリストとして指定します。
  6. 各ノードで、ソケットと TLS の設定 (hoststlsverifytlscacerttlscerttlskey) が Docker エンジンのオプション・ファイル (/etc/docker/daemon.json) 内で定義されていることを確認します。
  7. ノードで Docker systemd ユニット構成ファイル (/etc/systemd/system/docker.service.d/docker.conf) を使用していた場合は、そのすべての設定をユニット・ファイルから /etc/docker/daemon.json ファイルに移行し、ユニット・ファイルを削除します (まだそうしていない場合)。
  8. 各ノードで、以下のコマンドを発行して、Docker エンジンを再始動します。
    systemctl restart docker.service

次のタスク

/usr/bin/docker_remote コマンドを使用して Docker コマンドをリモートから呼び出せるようになりました。IBM Db2 Warehouse での Docker コマンドのリモート呼び出しを参照してください。