• 【Docker安装RockeMQ:基于Windows宿主机,并重点解决docker rocketMQ安装情况下控制台无法访问的问题】


    拉取镜像

    docker pull rocketmqinc/rocketmq
    
    • 1

    创建网络

    docker network create rocketmq-net
    
    • 1

    构建namesrv容器

    docker run -d -p 9876:9876 -v D:/dockerFile/rocketmq/namesrv/logs:/root/logs -v D:/dockerFile/rocketmq/namesrv/store:/root/store --network rocketmq-net --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
    
    • 1

    构建broker容器

    启动之前,你需要在 D:\dockerFile\rocketmq\broker\conf目录下创建 broker.conf 文件:

    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    brokerIP1 = 127.0.0.1//本机的ip地址
    autoCreateTopicEnable=true 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行下述命令(请继续看后文,这个是错误示例,为了记录问题原因而写的反面示例)

    docker run -d --name rmqbroker -p 10911:10911 -p 10909:10909 -v D:/dockerFile/rocketmq/broker/logs:/root/logs -v  D:\dockerFile\rocketmq\broker\store:/root/store -v D:/dockerFile/rocketmq/broker/conf/broker.conf:/opt/rocketmq/conf/broker.conf --network rocketmq-net --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh rmqbroker -c /opt/rocketmq/conf/broker.conf
    
    • 1

    出现如下问题(容器运行不起来)

    sh: rmqbroker: No such file or directory
    sh: rmqbroker: No such file or directory
    
    • 1
    • 2

    在这里插入图片描述
    原因:sh mqbroker -c /opt/rocketmq/conf/broker.conf中的mqbroker写成了和容器名字一样的的rmqbroker.

    docker run -d --name rmqbroker -p 10911:10911 -p 10909:10909 -v D:/dockerFile/rocketmq/broker/logs:/root/logs -v  D:\dockerFile\rocketmq\broker\store:/root/store -v D:/dockerFile/rocketmq/broker/conf/broker.conf:/opt/rocketmq/conf/broker.conf --network rocketmq-net --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf
    
    • 1

    各指令的含义参考文章:https://www.bmabk.com/index.php/post/67237.html
    在这里插入图片描述

    控制台console安装

    拉取镜像

    docker pull styletang/rocketmq-console-ng
    
    • 1

    运行容器

    docker run -d -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=127.0.0.1:9876 -Drocketmq.config.isVIPChannel=false" -p  9999:8080 --network rocketmq-net -t --name rmqconsole styletang/rocketmq-console-ng
    
    • 1

    打开浏览器locahost:9999,出现错误
    在这里插入图片描述

    在这里插入图片描述
    不管查了多少博客,试了多少种方法都不管用!

    参考文章:https://www.cnblogs.com/datanewblood/p/17629947.html

    docker pull apacherocketmq/rocketmq-dashboard:latest
    
    • 1

    在这里插入图片描述
    打开空白,啥也没有!

    以上问题解决办法

    创建broker容器时,配置文件应改为

    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    
    brokerIP1 = 192.168.0.105
    
    autoCreateTopicEnable=true 
    
    #发送消息的最大线程数
    sendMessageThreadPoolNums: 64
    #发送消息是否使用可重入锁
    useReentrantLockWhenPutMessage: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    其中brokerIP为宿主机IP1(以太网适配器以太网下的IP),查看办法如下:

    C:\Users\lxhjy>ipconfig
    
    Windows IP 配置
    
    
    以太网适配器 vEthernet (Default Switch):
    
       连接特定的 DNS 后缀 . . . . . . . :
       本地链接 IPv6 地址. . . . . . . . : fe80::7fa6:4a33:941c:8e64%21
       IPv4 地址 . . . . . . . . . . . . : 172.18.176.1
       子网掩码  . . . . . . . . . . . . : 255.255.240.0
       默认网关. . . . . . . . . . . . . :
    
    无线局域网适配器 WLAN:
    
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    
    无线局域网适配器 本地连接* 1:
    
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    
    无线局域网适配器 本地连接* 2:
    
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    
    以太网适配器 以太网:
    
       连接特定的 DNS 后缀 . . . . . . . :
       本地链接 IPv6 地址. . . . . . . . : fe80::7bf2:e3f6:62d3:dbc6%17
       IPv4 地址 . . . . . . . . . . . . : 192.168.0.105
       子网掩码  . . . . . . . . . . . . : 255.255.255.0
       默认网关. . . . . . . . . . . . . : 192.168.0.1
    
    以太网适配器 蓝牙网络连接:
    
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    
    以太网适配器 vEthernet (WSL):
    
       连接特定的 DNS 后缀 . . . . . . . :
       本地链接 IPv6 地址. . . . . . . . : fe80::fb40:3e47:1ee5:dd92%49
       IPv4 地址 . . . . . . . . . . . . : 172.18.16.1
       子网掩码  . . . . . . . . . . . . : 255.255.240.0
       默认网关. . . . . . . . . . . . . :
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    而创建控制台容器时,应该为如下:

    docker run -d --name rmqdashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.65.254:9876" -p 9080:8080 -t apacherocketmq/rocketmq-dashboard:latest
    
    • 1

    其中Drocketmq.namesrv.addr应该为容器namesrv IP,查看方法如下:

    C:\Users\lxhjy>docker exec -it rmqnamesrv /bin/bash
    [root@6adb298c9dcc bin]# ping host.docker.internal
    PING host.docker.internal (192.168.65.254) 56(84) bytes of data.
    64 bytes from 192.168.65.254 (192.168.65.254): icmp_seq=1 ttl=63 time=0.430 ms
    64 bytes from 192.168.65.254 (192.168.65.254): icmp_seq=2 ttl=63 time=0.829 ms
    64 bytes from 192.168.65.254 (192.168.65.254): icmp_seq=3 ttl=63 time=1.59 ms
    ^C
    --- host.docker.internal ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 3140ms
    rtt min/avg/max/mdev = 0.430/0.951/1.594/0.482 ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    问题解决

    在这里插入图片描述

    遗留问题:为啥配置了自动创建topic,这里还是false?

    在这里插入图片描述

  • 相关阅读:
    文件工具类
    在职美团测试工程师的这八年,我是如何成长的,愿技术人看完都有收获
    Webmin (CVE-2019-15107) 远程命令执行漏洞复现
    OpenCV(四十二):Harris角点检测
    图相似度计算——SIMGnn源码解读
    Git下载,安装与环境配置
    tensorflow2 minist手写数字识别数据训练
    Android一些新的技术栈,你都会哪些?
    SpringBoot3学习记录(有ssm基础)
    一个普通码农这辈子能掌握这101道算法题就足够了
  • 原文地址:https://blog.csdn.net/sinat_37828702/article/details/134299858