Docker中如何关联或合并IIB与MQ容器?(IIB依赖MQ)
如何关联IBM Integration Bus (IIB)容器与IBM MQ容器
嘿,作为刚上手Docker和IBM集成环境的新手,你已经搞定了拉取镜像、启动独立容器、创建队列管理器和代理这些核心步骤,接下来咱们只需要让这两个容器能顺畅通信就行,下面是一步步的实操指导:
第一步:创建自定义Docker网络
默认的Docker bridge网络虽然能让容器通信,但需要依赖容器IP(重启后可能变化),咱们创建一个专属的自定义网络,这样容器之间可以直接用容器名互相访问,稳定又方便:
docker network create ibm-integration-net
第二步:把MQ容器迁移到自定义网络
如果你的MQ容器是之前用默认网络启动的,得先停掉旧容器,再重新启动到咱们刚创建的网络里(要是你还没启动MQ容器,直接用下面的命令启动就行):
- 停止并删除旧MQ容器:
docker stop <你的MQ容器名/ID> docker rm <你的MQ容器名/ID>
- 用自定义网络启动MQ容器,记得替换成你自己的队列管理器名字:
docker run -d --name mq-container --network ibm-integration-net \ -e LICENSE=accept -e MQ_QMGR_NAME=QM1 \ ibmcom/mq
这里
--network指定了咱们的专属网络,MQ_QMGR_NAME要和你之前创建的队列管理器名称完全一致,别写错哦!
第三步:把IIB容器也加入同一个网络
和MQ容器操作类似,把IIB容器也移到这个自定义网络里:
- 停止并删除旧IIB容器:
docker stop <你的IIB容器名/ID> docker rm <你的IIB容器名/ID>
- 启动IIB容器到同一网络:
docker run -d --name iib-container --network ibm-integration-net \ -e LICENSE=accept \ ibmcom/iib
第四步:在IIB容器中配置代理连接MQ队列管理器
现在两个容器在同一个网络里了,咱们进入IIB容器配置连接:
- 进入IIB容器的命令行:
docker exec -it iib-container bash
- 配置MQ认证信息(如果你的MQ设置了用户名密码的话),替换成你的代理名、队列管理器名、MQ账号密码:
mqsisetdbparms <你的代理名> -n MQ::<QM1> -u <MQ用户名> -p <MQ密码>
- 配置IIB代理的MQ连接:
- 打开IIB的管理控制台或者用命令行工具,找到你创建的代理的MQ节点配置
- 把队列管理器主机名设为
mq-container(就是咱们给MQ容器起的名字,自定义网络里会自动解析) - 端口用MQ默认的
1414(如果没修改过MQ端口的话) - 队列管理器名填你之前创建的
QM1
更省心的方式:用Docker Compose管理
如果你不想手动敲一堆命令,用Docker Compose一次性编排两个容器更高效,创建一个docker-compose.yml文件:
version: '3' services: mq: image: ibmcom/mq environment: LICENSE: accept MQ_QMGR_NAME: QM1 MQ_ADMIN_PASSWORD: passw0rd # 替换成你的MQ管理员密码 networks: - ibm-net ports: - "1414:1414" - "9443:9443" # MQ控制台端口 iib: image: ibmcom/iib environment: LICENSE: accept networks: - ibm-net depends_on: - mq # 确保MQ先启动 networks: ibm-net: driver: bridge
然后在文件所在目录运行:
docker-compose up -d
这样两个容器会自动加入同一个网络,IIB容器直接用mq作为主机名就能访问MQ队列管理器,超方便!
一些关键注意点
- 确保MQ队列管理器已经给IIB的访问账号分配了足够的权限(比如队列的读写权限)
- 测试连接时,可以在MQ容器里用
runmqsc QM1命令查看队列状态,或者在IIB里发送测试消息验证 - 如果之前已经创建了IIB代理,不用重新创建,只需要修改代理的MQ连接配置即可
内容的提问来源于stack exchange,提问作者Abdullah Alsowaygh
相关产品推荐
相关产品推荐

