Docker以掛載方式安裝RocketMQ的實(shí)現(xiàn)方式
Docker 掛載安裝RocketMQ
- 在 Docker 中安裝和使用 RocketMQ 有多種方式,其中一種方式就是通過掛載本地文件的方式安裝 RocketMQ。掛載的方式可以避免重啟Docker鏡像后,原配置丟失的問題。
- 第一次安裝RocketMQ時(shí)難免踩坑,但是請(qǐng)保持平和心態(tài)對(duì)待,不要擔(dān)心,自己遇到的問題,別人一定遇到過,肯定有解決方案。
以下是將 RocketMQ 安裝到 Docker 中并掛載本地文件的簡單示例:
安裝 Docker
如果你還沒有安裝 Docker,請(qǐng)先安裝??梢詤⒖脊俜轿臋n https://docs.docker.com/install/ 進(jìn)行安裝
NameServer
1.拉取容器
docker pull rocketmqinc/rocketmq
2.創(chuàng)建NameServer容器
創(chuàng)建一個(gè)新的容器并指定 RocketMQ 的鏡像。
docker run -d \ --name rmqnamesrv \ -p 9876:9876 \ -v /your/local/path/conf:/root/config \ -v /your/local/path/logs:/root/logs \ -e "JAVA_OPTS=-Duser.home=/opt" \ rocketmqinc/rocketmq \ sh mqnamesrv
- -d 以守護(hù)線程方式啟動(dòng)
- –name rmqnamesrv 設(shè)置容器名稱
- -p 9876:9876 端口映射
- -v 把容器內(nèi)的/root/logs日志路徑掛載到宿主機(jī)的自定義路徑中(需根據(jù)自己的路徑自行創(chuàng)建)
- -v 把容器內(nèi)的/root/store數(shù)據(jù)存儲(chǔ)目錄掛載到宿主機(jī)的自定義目錄(需根據(jù)自己的路徑自行創(chuàng)建)
- rocketmqinc/rocketmq 使用鏡像的名稱
- sh mqnamesrv 執(zhí)行name server腳本
掛載本地文件語法
我們使用 -v
參數(shù)將本地文件掛載到 Docker 中。
-v /your/local/path/conf:/opt/rocketmq/conf -v /your/local/path/logs:/opt/rocketmq/logs
這樣 RocketMQ 的配置文件和日志文件就會(huì)被掛載到本地路徑,方便管理和查看。
3.查看容器狀態(tài)
使用以下命令可以查看容器是否正常運(yùn)行:
docker ps
如果能看到剛剛創(chuàng)建的容器,則表示安裝成功。
以上是通過掛載本地文件的方式在 Docker 中安裝 RocketMQ 的簡單示例,也可以通過其他方式進(jìn)行安裝和配置,請(qǐng)不要無腦復(fù)制命令, 具體根據(jù)自身下載鏡像和宿主機(jī)實(shí)際情況考慮。
4.補(bǔ)充配置
如果為避免上述掛載過程中出現(xiàn)conf配置失敗導(dǎo)致無法發(fā)送消息的問題,可以在容器中配置brokerIP1,配置過程如下:
docker exec -it nameserver容器id /bin/bash
命令解析來自ChatGPT:
docker -it命令用于以交互模式啟動(dòng)Docker容器。下面對(duì)這個(gè)命令進(jìn)行詳細(xì)解釋:
- docker: 是Docker客戶端命令。
- -i: 表示啟動(dòng)容器后,進(jìn)入交互模式。
- -t: 表示為容器分配一個(gè)偽終端。
通常,-it參數(shù)是在docker run命令中使用的,如:docker run -it [image]。這將啟動(dòng)一個(gè)新的容器,并以交互模式進(jìn)入控制臺(tái)。
vi ../conf/broker.conf
隨后插入brokerIP1配置即可。
#設(shè)置broker節(jié)點(diǎn)所在服務(wù)器的ip地址--宿主機(jī)IP brokerIP1 = xxx.xxx.x.x
Broker.conf其他配置項(xiàng)
# 所屬集群名稱,如果節(jié)點(diǎn)較多可以配置多個(gè) brokerClusterName = DefaultCluster #broker名稱,master和slave使用相同的名稱,表明他們的主從關(guān)系 brokerName = broker-a #0表示Master,大于0表示不同的slave brokerId = 0 #表示幾點(diǎn)做消息刪除動(dòng)作,默認(rèn)是凌晨4點(diǎn) deleteWhen = 04 #在磁盤上保留消息的時(shí)長,單位是小時(shí) fileReservedTime = 48 #有三個(gè)值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機(jī)制; brokerRole = ASYNC_MASTER #刷盤策略,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤和異步刷盤;SYNC_FLUSH消息寫入磁盤后才返回成功狀態(tài),ASYNC_FLUSH不需要; flushDiskType = ASYNC_FLUSH
Broker
docker run -d \ --name rmqbroker \ --link rmqnamesrv:namesrv \ -p 10911:10911 \ -p 10909:10909 \ -v /docker/rocketmq/data/broker/logs:/root/logs \ -v /docker/rocketmq/data/broker/store:/root/store \ -v /docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \ -e "NAMESRV_ADDR=namesrv:9876" \ -e "MAX_POSSIBLE_HEAP=200000000" \ rocketmqinc/rocketmq \ sh mqbroker -c ../conf/broker.conf
- –link rmqnamesrv:namesrv 和rmqnamesrv容器通信
- -p 10911:10911 把容器的非vip通道端口掛載到宿主機(jī)
- -p 10909:10909 把容器的vip通道端口掛載到宿主機(jī)
- -e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址為本機(jī)namesrv的ip地址:9876
- -e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker 指定broker服務(wù)的最大堆內(nèi)存(暫未配置)
- sh mqbroker -c …/conf/broker.conf 讀取…/conf/broker.conf配置并啟動(dòng)broker
RocketMQ-console
以下是在 Docker 中安裝 RocketMQ Console NG 的簡單步驟:
構(gòu)建鏡像
在下載完成后,使用以下命令構(gòu)建鏡像:
docker pull pangliang/rocketmq-console-ng
其中,version
是需要構(gòu)建的 RocketMQ Console NG 版本號(hào),可以根據(jù)需要進(jìn)行修改。
啟動(dòng)容器
使用以下命令啟動(dòng)容器:
docker run -d \ --name rmqadmin \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=your_nameserver_address:9876 \ -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -p 9999:8080 \ pangliang/rocketmq-console-ng
- -e "JAVA_OPTS=-Drocketmq.namesrv.addr=your_nameserver_address:9876 設(shè)置nameserver服務(wù)的地址
- -p 9999:8080 容器端口映射到宿主機(jī)的8080端口
其中,your_nameserver_address
是您的 RocketMQ Broker 的 Nameserver 地址。如果您沒有配置 Nameserver,可以使用 [your_broker_ip]:9876
作為該變量的值。
訪問控制臺(tái)
此時(shí),RocketMQ Console NG 就已經(jīng)在 Docker 容器中啟動(dòng)成功了。現(xiàn)在,可以使用瀏覽器訪問 http://localhost:8080
或 http://[your_server_ip]:8080
來訪問控制臺(tái)。
其他注意事項(xiàng)
在使用 RocketMQ Console NG 進(jìn)行監(jiān)控時(shí),應(yīng)確??刂婆_(tái)與 Nameserver 的網(wǎng)絡(luò)連接正常。此外,還需要注意設(shè)置 RocketMQ 的相關(guān)參數(shù),包括 Nameserver 地址和 VIP 通道等??梢酝ㄟ^設(shè)置環(huán)境變量來設(shè)置這些參數(shù)。以上是在 Docker 中安裝 RocketMQ Console NG 的簡單步驟,具體細(xì)節(jié)可以根據(jù)實(shí)際情況進(jìn)行調(diào)整和修改。
最后
祝大家都成功,耐住性子。
到此這篇關(guān)于Docker以掛載方式安裝RocketMQ的實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)Docker掛載方式安裝RocketMQ內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析SpringBoot打包上傳到docker并實(shí)現(xiàn)多實(shí)例部署(IDEA版)
這篇文章主要介紹了SpringBoot打包上傳到docker并實(shí)現(xiàn)多實(shí)例部署(IDEA版),本文通過圖文并茂實(shí)例詳解的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Skywalking?Docker單機(jī)環(huán)境搭建過程
這篇文章主要介紹了Skywalking?Docker單機(jī)環(huán)境搭建,本次搭建是基于MySQL進(jìn)行持久化,因此需要提前準(zhǔn)備好一個(gè)MySQL容器,需要的朋友可以參考下2024-02-02Docker?部署?Minio?對(duì)象存儲(chǔ)服務(wù)器的過程詳解
Minio是一個(gè)輕量級(jí)的應(yīng)用程序,可以在各種環(huán)境中運(yùn)行,包括公共云、私有云和混合云,這篇文章主要介紹了Docker?部署?Minio?對(duì)象存儲(chǔ)服務(wù)器的過程詳解,需要的朋友可以參考下2024-07-07如何使用docker compose 部署ELK 8.X及監(jiān)控
這篇文章主要介紹了如何使用docker compose 部署ELK 8.X及監(jiān)控,包括前置環(huán)境配置及docker compose啟動(dòng)/停止的命令,感興趣的朋友跟隨小編一起看看吧2023-10-10Docker查看是否開機(jī)自啟及容器自啟動(dòng)設(shè)置
Docker是當(dāng)前最流行的容器技術(shù),通過運(yùn)用容器打包應(yīng)用程序并部署到生產(chǎn)環(huán)境中,可大大提高部署的速度和可靠性,下面這篇文章主要給大家介紹了關(guān)于Docker查看是否開機(jī)自啟及容器自啟動(dòng)設(shè)置的相關(guān)資料,需要的朋友可以參考下2024-01-01使用Docker?Compose部署Nginx的詳細(xì)教程
在現(xiàn)代應(yīng)用部署中,容器編排工具已成為不可或缺的一部分,Docker?Compose?作為?Docker?官方的單機(jī)編排工具,通過聲明式的?YAML?文件簡化了多容器應(yīng)用的管理,下面我們就來看看如何使用Docker?Compose部署Nginx吧2025-03-03