IBM MQコンテナ導入ガイド:Dockerで爆速構築・検証する手順とノウハウ
第1章:はじめに
- 1.1. 本記事の目的と対象読者
- WindowsのWSLの環境を用いてMQのコンテナ版の環境を簡単に構築する
- 対象読者 MQに興味がある開発者、コンテナ技術に関心のあるエンジニア
- 1.2. IBM MQのコンテナ化のメリット
- 環境構築の簡素化・高速化
- ポータビリティ(持ち運びの容易さ)と再現性
- 開発・検証環境の使い捨てによる効率化
第2章:環境準備と基本コンセプト
- 2.1. 前提条件と必要なツール
- Windows 2022の環境のWSLにDockerを導入されていることが本記事の前提です
- 2.2. コンテナ版IBM MQのイメージについて
- コンテナイメージについては、IBM Container Registryで提供されているIBM MQ Advanced for Developers コンテナー・イメージをつかいます
https://www.ibm.com/docs/ja/ibm-mq/9.4.x?topic=reference-mq-advanced-developers-container-image
- コンテナイメージについては、IBM Container Registryで提供されているIBM MQ Advanced for Developers コンテナー・イメージをつかいます
第3章:シングルインスタンスMQの構築と動作確認(基本編)
-
3.1. イメージの取得とコンテナの起動
-
docker pullコマンドによるイメージ取得は、下記コマンドで取得しますdocker pull icr.io/ibm-messaging/mq:latest -
コンテナ間でメッセージのやり取りを行うために、カスタムネットワークを作成します。今回は、mq-networkという名前で作成します。
docker network create mq-network -
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
-
-
3.2. Webコンソールへのアクセス手順
-
webブラウザで以下のURLを開いてください。
https://localhost:9443/ibmmq/console -
proceed to localhost(unsafe) :日本語だとlocalhost にアクセスする(安全ではありません)

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

-
-
3.3. 簡単な動作確認
-
Queueのタブを選択して、Queueを表示させます
DEV.QUEUE.1、DEV.QUEUE.2、DEV.QUEUE.3が表示されています

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

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

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

第4章:分散キューイングの動作確認
-
4.1. 分散キューイングの全体像
分散キューイングでは、キューマネージャー間でメッセージのやり取りができるような構成を構築します

-
4.2 キューマネージャーの追加(QM2)
第3章で、QM1を作成したのと同様に、QM2を作成していきます- 永続化のためのボリュームの作成
docker volume create qm2dataで作成します
-
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
- 永続化のためのボリュームの作成
-
4.3 QM1とQM2の接続のための設定
QM1とQM2の間を接続するための、要素として、リモートキュー、トランスミッションキュー、チャネルを定義します-
以下を入力します
項目 値 Queue name QM2.RQ.1 Remote queue DEV.QUEUE.1 Remote queue manager QM2 Transmission queue XMITQ
-
Queue nameにXMITQと入力して、Custom createをクリックします

Usageの画面が出るまでスクロールし、NormalからTransmissionに変更し、Createをクリックします

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

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

-
下記を入力します
項目 値 Channel name QM1toQM2 Conn name QM2(1414) Transmission queue XMITQ

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

- QM2でReceiver channel(受信チャネル)を作成します
https://localhost:9444/ibmmq/consoleにアクセスします
QM2のMQ networkタブで、Queue manager channelsを選択して、Createをクリックします
- Receiver channelを選択して、Createをクリック
- チャネル名にQM1toQM2と入力してCreateをクリック
- 先ほど作成したチャネルQM1toQM2に対して、アクセスの許可を与えます
View Configurationをクリックします
- Securityタブを開き、Channel authenticationをクリックします
Createをクリックして、チャネルに対する許可を与えます
- Allowを選択し、Addressを選択し、Nextをクリックします
- 今回は、すべてのアドレスからアクセスできる設定にします
Channel nameにはQM1toQM2を入力し、Addressには、*を入力します、最後にCreateをクリックします
- Address mapが作成されました
-
4.4 メッセージの送信テスト
送信チャネルを開始し、チャネルが開始したら、メッセージの送信をおこないます- 送信チャネルの開始 QM1のQM1toQM2のチャネルを開始します
MQ networkを選択し、Queue manager channelsを選択し、QM1toQM2の右側にある、3点リーダーをクリックして、Startを実行します
- StatusがRunningになったことを確認します
- QM2.RQ.1にメッセージを送信します
QM1のQueuesタブを選び、QM2.RQ.1のキューの右側にある、3点リーダーをクリックして、Create messageを実行します
- Application dataの所に送りたいメッセージの内容を入力し、Createを実行します
- メッセージが送信されると、Create messageが表示されます
- QM2のコンソールから、DEV.QUEUE.1のキューを確認します
DEV.QUEUE.1に一件メッセージがきていることがわかります
- 中身を確認します
先ほどQM1のQM2.RQ.1に送信した内容が表示されています
- 送信チャネルの開始 QM1のQM1toQM2のチャネルを開始します
まとめ
- 本記事の振り返り:DockerがもたらすMQ環境構築の変革
本記事では、Dockerコンテナを利用したIBM MQ環境の構築と、メッセージングの中核である分散キューイングの設定手順を実践しました。
🚀 導入の劇的な高速化と簡素化: Dockerのおかげで、従来数時間かかっていたMQ環境のセットアップを、わずか数分のコマンド実行で完了することができました。これは、開発・検証サイクルのスピードアップに大きく貢献します。
🔄 分散キューイングの再現性の確保: 2つの独立したキューマネージャ(QMGR)をコンテナで立ち上げ、チャネル、リモートキュー定義などの設定を通じて、実際のエンタープライズ環境で必須となる**分散キューイング(DQM)**を実現しました。
🛠️ 環境破棄・再構築の容易さ: コンテナ環境はいつでも簡単に破棄し、クリーンな状態で再構築できるため、検証やテストで環境が汚れることを気にせずに何度でも試行錯誤が可能です。





















