Docker安装rocketmq踩坑指南

Docker 网络

Docker容器运行的时候有host、bridge、none三种网络可供配置。
默认是bridge,即桥接网络,以桥接模式连接到宿主机;host是宿主网络,即与宿主机共用网络;none则表示无网络,容器将无法联网。
当容器使用host网络时,容器与宿主共用网络,这样就能在容器中访问宿主机网络,那么容器的localhost就是宿主机的localhost,命令--network host,此时没有必要使用端口映射-p 80:80 -p 443:443来映射端口,是因为本身与宿主机共用了网络,容器中暴露端口等同于宿主机暴露端口。

Docker获取rocketmq 镜像

docker search xxx 可以搜索镜像都有哪些

  • docker pull rocketmqinc/rocketmq 拉取官方镜像,注意:如果这里加上版本号,例如rocketmqinc/rocketmq:4.4.0,虽然现在测试的就是4.4.0版本,但是编辑broker.conf时候会权限不够,这里很奇怪,不知道为什么

  • docker run -itd -p 9876:9876 --name rmqnamesrv rocketmqinc/rocketmq sh mqnamesrv 开启mqnamesrv服务

镜像和上面的相同不需要重新拉取

  • docker run -itd -p 10911:10911 -p 10909:10909 --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=rmqnamesrv:9876" rocketmqinc/rocketmqsh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf 开启broker服务,rmqnamesrv:9876为mqnamesrv服务的地址(容器名:端口),因为桥接了网络,才可以使用容器名:端口

修改conf/broker.conf,添加brokerIP1=外网ip(不能用docker的ip,即便是桥接网络也不行,必须是外网IP),然后重启broker服务

可视化界面

  • docker pull styletang/rocketmq-console-ng 拉取可视化界面镜像,这里选取star最多的镜像

  • docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -itd --name rocketmq-console styletang/rocketmq-console-ng 开启可视化界面服务,rmqnamesrv:9876 为mqnamesrv服务的地址(这里好像有点问题,具体我也不知道应该写docker地址还是外网地址,知道的麻烦留言告诉我)

给这三个服务创建桥接网络

  • docker network create my-net # 创建了一个名为"my-net"的网络
  • docker network connect my-net rmqnamesrv
  • docker network connect my-net rmqbroker
  • docker network connect my-net rocketmq-console
  • docker network inspect my-net #查看桥接网络信息
posted @ 2020-12-09 15:46  rm-rf*  阅读(1145)  评论(0编辑  收藏  举报