1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerで始めるIBM MQ入門:コンテナ版MQの導入と動作確認ステップ

Last updated at Posted at 2025-12-12

IBM MQコンテナ導入ガイド:Dockerで爆速構築・検証する手順とノウハウ

第1章:はじめに

  • 1.1. 本記事の目的と対象読者
    • WindowsのWSLの環境を用いてMQのコンテナ版の環境を簡単に構築する
    • 対象読者 MQに興味がある開発者、コンテナ技術に関心のあるエンジニア
  • 1.2. IBM MQのコンテナ化のメリット
    • 環境構築の簡素化・高速化
    • ポータビリティ(持ち運びの容易さ)と再現性
    • 開発・検証環境の使い捨てによる効率化

第2章:環境準備と基本コンセプト

第3章:シングルインスタンスMQの構築と動作確認(基本編)

  • 3.1. イメージの取得とコンテナの起動

    • docker pull コマンドによるイメージ取得は、下記コマンドで取得します

      docker pull icr.io/ibm-messaging/mq:latest
      

      image.png

    • docker image list コマンドでイメージの確認
      image.png

    • コンテナ間でメッセージのやり取りを行うために、カスタムネットワークを作成します。今回は、mq-networkという名前で作成します。

      docker network create mq-network
      

      image.png

    • 永続化のためのボリュームの作成 docker volume create qm1dataで作成します
      image.png

    • docker run コマンドによるコンテナ起動
      下記コマンドによって、キューマネージャーを起動します

          docker run \
        > --name QM1 \      # コンテナ名:QM1
          > --detach \     # コンテナをバックグラウンドで起動。
          > --volume qm1data:/mnt/mqm \   # 
          > --publish 1414:1414 \      # デフォルトで作られるリスナのポート:1414をホストから転送
          > --publish 9443:9443 \      # 管理コンソールのポート:9443をホストから転送
          > --env LICENSE=accept \       # ライセンスに同意。
          > --env MQ_QMGR_NAME=QM1 \            #デフォルトで作られるキューマネージャ名:QM1
          > --env MQ_APP_USER=app \             # 一般ユーザー名:app
          > --env MQ_APP_PASSWORD=passw0rd \
          > --env MQ_ADMIN_USER=admin \         #adminユーザー名:admin
          > --env MQ_ADMIN_PASSWORD=passw0rd \
          > --network mq-network
          > コンテナイメージID
      

    image.png

    • QM1の起動を確認 docker psで確認します
      image.png
  • 3.2. Webコンソールへのアクセス手順

    • webブラウザで以下のURLを開いてください。
      https://localhost:9443/ibmmq/console

    • Advanced(日本語だと詳細設定)を開きます
      image.png

    • proceed to localhost(unsafe) :日本語だとlocalhost にアクセスする(安全ではありません)
      image.png

    • ログイン画面が開くので、ユーザー名とパスワードに以下の値を入力してください
      ユーザー名: admin
      パスワード: passw0rd
      image.png

    • QM1にアクセスできました。画面に「Manage QM1」(日本語だとQM1の管理)と書かれているのを確認してください
      image.png

  • 3.3. 簡単な動作確認

    • キューの確認
      Manage QM1を選択します
      image.png

    • Queueのタブを選択して、Queueを表示させます
      DEV.QUEUE.1、DEV.QUEUE.2、DEV.QUEUE.3が表示されています
      image.png

    • MQのサンプルプログラムの、amqsputからメッセージをキューにPutしてみます
      docker exec -it QM1 bashコマンドで、シェルを実行できるようにします
      image.png

    • サンプルプログラムのディレクトリに移動します
      cd /opt/mqm/samp/bin
      image.png

    • amqsputを使って、QM1のDEV.QUEUE.1にメッセージをPutしてみます
      amqsput DEV.QUEUE.1 QM1コマンドを入力すると、メッセージの入力待ちになるので、現在の日付をメッセージとして入力します
      image.png

    • キューの中身を確認します
      ブラウザに戻って、Queueのタブを開くと、DEV.QUEUE.1を見てみます
      DEV.QUEUE.1に一つのメッセージが入っていることがわかります
      image.png

    • DEV.QUEUE.1を選ぶと、下記の画面になり、先ほど入力したメッセージが表示されています
      image.png

第4章:分散キューイングの動作確認

  • 4.1. 分散キューイングの全体像
    分散キューイングでは、キューマネージャー間でメッセージのやり取りができるような構成を構築します
    image.png

  • 4.2 キューマネージャーの追加(QM2)
    第3章で、QM1を作成したのと同様に、QM2を作成していきます

    • 永続化のためのボリュームの作成 docker volume create qm2dataで作成します
      image.png
    • docker run コマンドによるコンテナ起動
      下記コマンドによって、キューマネージャーを起動します
          docker run \
          > --name QM2 \      # コンテナ名:QM2
          > --detach \     # コンテナをバックグラウンドで起動。
          > --volume qm1data:/mnt/mqm \   # 
          > --publish 1415:1414 \      # デフォルトで作られるリスナのポート:1415をホストから転送
          > --publish 9444:9443 \      # 管理コンソールのポート:9444をホストから転送
          > --env LICENSE=accept \       # ライセンスに同意。
          > --env MQ_QMGR_NAME=QM2 \            #デフォルトで作られるキューマネージャ名:QM2
          > --env MQ_APP_USER=app \             # 一般ユーザー名:app
          > --env MQ_APP_PASSWORD=passw0rd \
          > --env MQ_ADMIN_USER=admin \         #adminユーザー名:admin
          > --env MQ_ADMIN_PASSWORD=passw0rd \
          > --network mq-network
          > コンテナイメージID
      

    image.png

    • docker psコマンドで、QM2が稼働していることを確認
      image.png
  • 4.3 QM1とQM2の接続のための設定
    QM1とQM2の間を接続するための、要素として、リモートキュー、トランスミッションキュー、チャネルを定義します

    • リモートキュー(QM2.RQ.1)をQM1に定義します。
      image.png

    • Queueのタブから、Createをクリックします
      image.png

    • Remoteを選択して、Nextをクリックします
      image.png

    • 以下を入力します

      項目
      Queue name QM2.RQ.1
      Remote queue DEV.QUEUE.1
      Remote queue manager QM2
      Transmission queue XMITQ

    image.png
    下にスクロールして、他の値も入力し、Createをクリック
    image.png

    • トランスミッションキュー(XMITQ)を定義します
      image.png

    • QM1のQueueのタブから、Createをクリックします
      image.png

    • Localを選択して、Nextをクリックします
      image.png

    • Queue nameにXMITQと入力して、Custom createをクリックします
      image.png
      Usageの画面が出るまでスクロールし、NormalからTransmissionに変更し、Createをクリックします
      image.png

    • チャネルの作成
      image.png

    • QM1でチャネルの作成画面を表示します
      QM1でMQ networkを選択し、Queue manager channelsを選択し、Createをクリックします
      image.png

    • Senderチャネルの作成
      QM1は、QM2にデータを送信するので、Sender(送信)チャネルを作成します
      Sender channelを選択して、Nextをクリック
      image.png

    • 下記を入力します

      項目
      Channel name QM1toQM2
      Conn name QM2(1414)
      Transmission queue XMITQ

    image.png
    スクロールして、Conn nameとTransmission queueを入力して、Createをクリックします
    image.png

    • QM2でReceiver channel(受信チャネル)を作成します
      https://localhost:9444/ibmmq/consoleにアクセスします
      QM2のMQ networkタブで、Queue manager channelsを選択して、Createをクリックします
      image.png
    • Receiver channelを選択して、Createをクリック
      image.png
    • チャネル名にQM1toQM2と入力してCreateをクリック
      image.png
    • 先ほど作成したチャネルQM1toQM2に対して、アクセスの許可を与えます
      View Configurationをクリックします
      image.png
    • Securityタブを開き、Channel authenticationをクリックします
      Createをクリックして、チャネルに対する許可を与えます
      image.png
    • Allowを選択し、Addressを選択し、Nextをクリックします
      image.png
    • 今回は、すべてのアドレスからアクセスできる設定にします
      Channel nameにはQM1toQM2を入力し、Addressには、*を入力します、最後にCreateをクリックします
      image.png
    • Address mapが作成されました
      image.png
  • 4.4 メッセージの送信テスト
    送信チャネルを開始し、チャネルが開始したら、メッセージの送信をおこないます

    • 送信チャネルの開始 QM1のQM1toQM2のチャネルを開始します
      MQ networkを選択し、Queue manager channelsを選択し、QM1toQM2の右側にある、3点リーダーをクリックして、Startを実行します
      image.png
    • StatusがRunningになったことを確認します
      image.png
    • QM2.RQ.1にメッセージを送信します
      QM1のQueuesタブを選び、QM2.RQ.1のキューの右側にある、3点リーダーをクリックして、Create messageを実行します
      image.png
    • Application dataの所に送りたいメッセージの内容を入力し、Createを実行します
      image.png
    • メッセージが送信されると、Create messageが表示されます
      image.png
    • QM2のコンソールから、DEV.QUEUE.1のキューを確認します
      DEV.QUEUE.1に一件メッセージがきていることがわかります
      image.png
    • 中身を確認します
      先ほどQM1のQM2.RQ.1に送信した内容が表示されています
      image.png

まとめ

  • 本記事の振り返り:DockerがもたらすMQ環境構築の変革

本記事では、Dockerコンテナを利用したIBM MQ環境の構築と、メッセージングの中核である分散キューイングの設定手順を実践しました。

🚀 導入の劇的な高速化と簡素化: Dockerのおかげで、従来数時間かかっていたMQ環境のセットアップを、わずか数分のコマンド実行で完了することができました。これは、開発・検証サイクルのスピードアップに大きく貢献します。

🔄 分散キューイングの再現性の確保: 2つの独立したキューマネージャ(QMGR)をコンテナで立ち上げ、チャネル、リモートキュー定義などの設定を通じて、実際のエンタープライズ環境で必須となる**分散キューイング(DQM)**を実現しました。

🛠️ 環境破棄・再構築の容易さ: コンテナ環境はいつでも簡単に破棄し、クリーンな状態で再構築できるため、検証やテストで環境が汚れることを気にせずに何度でも試行錯誤が可能です。

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?