最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker?搭建?RabbitMQ的詳細(xì)過程

 更新時(shí)間:2025年04月18日 10:11:48   作者:代碼怪獸大作戰(zhàn)  
在現(xiàn)代微服務(wù)與分布式架構(gòu)中,RabbitMQ?是一款成熟的開源消息隊(duì)列中間件,提供了可靠的消息投遞、豐富的路由策略和管理插件,本文將詳細(xì)介紹Docker?搭建?RabbitMQ的過程,感興趣的朋友一起看看吧

前言

在現(xiàn)代微服務(wù)與分布式架構(gòu)中,RabbitMQ 是一款成熟的開源消息隊(duì)列中間件,提供了可靠的消息投遞、豐富的路由策略和管理插件。通過 Docker 部署 RabbitMQ,可以快速搭建、輕松擴(kuò)展,并與容器化平臺(tái)無縫集成。

本文將指導(dǎo)你通過 Docker 快速搭建一個(gè) RabbitMQ 環(huán)境,講解目錄結(jié)構(gòu)、啟動(dòng)腳本編寫、參數(shù)詳解,以及兩種網(wǎng)絡(luò)模式(Host 網(wǎng)絡(luò)模式 vs Port 映射模式)的部署示例與對(duì)比。

一、準(zhǔn)備工作

首先,確保你的系統(tǒng)上已經(jīng)安裝了 Docker。

Linux上進(jìn)行Docker安裝有兩種方式:

  • Docker自動(dòng)化安裝
  • Docker手動(dòng)安裝

可以根據(jù)該文章的步驟進(jìn)行安裝:http://m.fzitv.net/server/339879ek2.htm

二、設(shè)置目錄結(jié)構(gòu)

為了持久化存儲(chǔ)日志、數(shù)據(jù)和配置,需要在宿主機(jī)上創(chuàng)建對(duì)應(yīng)目錄,并賦予 RabbitMQ 容器內(nèi)部用戶(UID 999)的寫權(quán)限。

# 創(chuàng)建日志、數(shù)據(jù)和配置目錄
mkdir -p "$DIR/rabbitmq/log"
mkdir -p "$DIR/rabbitmq/data"
mkdir -p "$DIR/rabbitmq/conf"
# 設(shè)置目錄權(quán)限為容器內(nèi) rabbitmq 用戶(UID 999)
sudo chown -R 999:999 \
  "$DIR/rabbitmq/log" \
  "$DIR/rabbitmq/data" \
  "$DIR/rabbitmq/conf"
  • log:存放 RabbitMQ 日志
  • data:存放 Mnesia 數(shù)據(jù)庫文件
  • conf:存放自定義配置(如 rabbitmq.conf、advanced.config、enabled_plugins)

三、編寫啟動(dòng)腳本

將目錄準(zhǔn)備工作與容器運(yùn)行命令整合到腳本 rabbitmq_install.sh 中,方便一鍵部署與更新。

#!/bin/bash
# 安裝路徑與容器名稱
DIR="/opt/docker/demo"
DOCKER_NAME="docker-rabbitmq"
# 創(chuàng)建目錄并設(shè)置權(quán)限
mkdir -p "$DIR/rabbitmq/log"
mkdir -p "$DIR/rabbitmq/data"
mkdir -p "$DIR/rabbitmq/conf"
sudo chown -R 999:999 "$DIR/rabbitmq/log" \
                     "$DIR/rabbitmq/data" \
                     "$DIR/rabbitmq/conf"
# 運(yùn)行 RabbitMQ 容器(Host 網(wǎng)絡(luò)模式)
docker run -d \
  --restart=always \                          # 容器重啟策略
  --name "$DOCKER_NAME" \                     # 容器名稱
  --network host \                            # 主機(jī)網(wǎng)絡(luò)模式
  -v "$DIR/rabbitmq/log:/var/log/rabbitmq" \  # 日志掛載
  -v "$DIR/rabbitmq/data:/var/lib/rabbitmq/mnesia" \  # 數(shù)據(jù)掛載
  -v "$DIR/rabbitmq/conf:/etc/rabbitmq" \     # 配置掛載
  -e RABBITMQ_DEFAULT_USER=admin \            # 默認(rèn)用戶名
  -e RABBITMQ_DEFAULT_PASS=admin123456 \      # 默認(rèn)密碼
  -e RABBITMQ_ENABLED_PLUGINS="rabbitmq_management" \ # 啟用管理插件
  rabbitmq:management                         # 官方管理版鏡像

保存后,賦予執(zhí)行權(quán)限并運(yùn)行:

chmod +x run_rabbitmq.sh
./run_rabbitmq.sh

解釋各個(gè)參數(shù)

  • -d:后臺(tái)運(yùn)行容器。
  • --restart=always:重啟策略:當(dāng)容器退出或 Docker 重啟時(shí),總是自動(dòng)重啟該容器。
  • --name "$DOCKER_NAME":容器的名稱為 docker-rabbitmq
  • --network host:使用主機(jī)網(wǎng)絡(luò)模式(Host networking),容器與宿主機(jī)共享網(wǎng)絡(luò)棧。
  • -v "$DIR/rabbitmq/log:/var/log/rabbitmq":日志掛載-v "$DIR/rabbitmq/data:/var/lib/rabbitmq/mnesia": 數(shù)據(jù)掛載。
  • -v "$DIR/rabbitmq/conf:/etc/rabbitmq":配置掛載。
  • -e RABBITMQ_DEFAULT_USER=…:環(huán)境變量,設(shè)置 RabbitMQ 默認(rèn)用戶名(第一次啟動(dòng)時(shí)生效)。
  • -e RABBITMQ_DEFAULT_PASS=…:環(huán)境變量,設(shè)置 RabbitMQ 默認(rèn)密碼。
  • -e RABBITMQ_ENABLED_PLUGINS=…:環(huán)境變量,啟用指定插件(以逗號(hào)分隔),此處開啟管理控制臺(tái)插件。
  • rabbitmq:management:指定鏡像及標(biāo)簽,management 版本內(nèi)置了管理插件與 Web 控制臺(tái)。

四、Host 網(wǎng)絡(luò)模式 vs Port 映射模式

1. Host 網(wǎng)絡(luò)模式

命令示例

docker run -d \
  --restart=always \
  --name "$DOCKER_NAME" \
  --network host \
  -v "$DIR/rabbitmq/log:/var/log/rabbitmq" \
  -v "$DIR/rabbitmq/data:/var/lib/rabbitmq/mnesia" \
  -v "$DIR/rabbitmq/conf:/etc/rabbitmq" \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=admin123456 \
  -e RABBITMQ_ENABLED_PLUGINS="rabbitmq_management" \
  rabbitmq:management

特點(diǎn)

  • 容器直接使用宿主機(jī)的網(wǎng)絡(luò)棧,RabbitMQ 內(nèi)部監(jiān)聽的端口(默認(rèn) 5672、15672)會(huì)直接映射到宿主機(jī)相同端口。

  • 網(wǎng)絡(luò)性能最佳,無額外的 NAT 轉(zhuǎn)發(fā)開銷。

優(yōu)點(diǎn)

  • 簡化網(wǎng)絡(luò)配置,無需額外的 -p 端口映射。

  • 延遲更低,吞吐更高。

缺點(diǎn)

  • 與宿主機(jī)完全共享端口,若宿主機(jī)已有同端口服務(wù)運(yùn)行,會(huì)沖突。

  • 安全隔離較弱,容器網(wǎng)絡(luò)直接暴露給宿主機(jī)。

2. Port 映射模式

命令示例

docker run -d \
  --restart=always \
  --name "$DOCKER_NAME" \
  -p 5673:5672 \
  -p 15673:15672 \
  -v "$DIR/rabbitmq/log:/var/log/rabbitmq" \
  -v "$DIR/rabbitmq/data:/var/lib/rabbitmq/mnesia" \
  -v "$DIR/rabbitmq/conf:/etc/rabbitmq" \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=admin123456 \
  -e RABBITMQ_ENABLED_PLUGINS="rabbitmq_management" \
  rabbitmq:management

含義

  • -p 5673:5672:將宿主機(jī)的 5673 端口映射到容器內(nèi)的 5672(AMQP)端口。
  • -p 15673:15672:將宿主機(jī)的 15673 端口映射到容器內(nèi)的 15672(管理控制臺(tái))端口。

優(yōu)點(diǎn)

  • 靈活指定宿主機(jī)端口,避免與其他服務(wù)沖突。
  • 容器網(wǎng)絡(luò)與宿主機(jī)隔離更好,安全性更高。

缺點(diǎn)

  • 相比 Host 模式,略有端口轉(zhuǎn)發(fā)開銷。

  • 需手動(dòng)管理多端口映射配置。

五、端口配置對(duì)比

特性Host 網(wǎng)絡(luò)模式Port 映射模式
配置命令--network host-p host:container
網(wǎng)絡(luò)性能最佳,無 NAT 轉(zhuǎn)發(fā)開銷有少量轉(zhuǎn)發(fā)開銷
端口沖突風(fēng)險(xiǎn)高,容器直接占用宿主機(jī)端口低,可自定義宿主機(jī)端口
安全隔離較弱較強(qiáng)
多容器端口復(fù)用不支持支持,不同容器映射到不同端口
配置復(fù)雜度簡單需要顯式映射

六、配置示例

rabbitmq.conf(放置于 $DIR/rabbitmq/conf/rabbitmq.conf)

# 修改 AMQP 端口
listeners.tcp.default = 5673  # 修改為你想要的端口
# 修改 RabbitMQ 管理界面端口
management.listener.port = 15673  # 修改為你想要的端口
# 允許非本地訪問 guest 用戶
loopback_users.guest = false

enabled_plugins(放置于 $DIR/rabbitmq/conf/enabled_plugins)

[rabbitmq_management,rabbitmq_peer_discovery_classic_config].

七、查看與管理

查看容器狀態(tài)

docker ps | grep "$DOCKER_NAME"

查看日志

tail -f "$DIR/rabbitmq/log/rabbit@$(hostname).log"
或
docker logs -f $DOCKER_NAME

訪問管理控制臺(tái)

瀏覽器訪問 http://<宿主機(jī)IP>:15672,使用 admin/admin123456 登錄。

八、擴(kuò)展與高可用

集群部署

  • 在多臺(tái)主機(jī)上運(yùn)行相同腳本,調(diào)整容器名稱與配置
  • 使用 rabbitmq_peer_discovery_classic_config 或 Kubernetes 插件實(shí)現(xiàn)自動(dòng)發(fā)現(xiàn)與集群組網(wǎng)

鏡像隊(duì)列與策略

  • 在管理控制臺(tái)或配置文件中設(shè)置隊(duì)列鏡像策略,確保消息持久化與高可用

監(jiān)控與告警

  • 接入 Prometheus、Grafana 等監(jiān)控體系,利用 RabbitMQ Exporter 采集指標(biāo)

九、常用命令

修改默認(rèn)密碼

如果需要修改 RabbitMQ 的默認(rèn)密碼,可以使用以下命令:

docker exec -it "$DOCKER_NAME" rabbitmqctl change_password admin newpassword

請(qǐng)將 newpassword 替換為希望設(shè)置的新密碼。

啟用其他插件

如果需要啟用其他 RabbitMQ 插件,可以使用以下命令:

docker exec -it "$DOCKER_NAME" rabbitmq-plugins enable <plugin_name>

請(qǐng)將 <plugin_name> 替換為希望啟用的插件名稱。

到此這篇關(guān)于Docker 搭建 RabbitMQ的詳細(xì)過程的文章就介紹到這了,更多相關(guān)Docker 搭建 RabbitMQ內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker默認(rèn)網(wǎng)段修改實(shí)現(xiàn)方法解析

    Docker默認(rèn)網(wǎng)段修改實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Docker默認(rèn)網(wǎng)段修改實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Docker快速部署MinIO對(duì)象存儲(chǔ)服務(wù)的最新實(shí)戰(zhàn)指南

    Docker快速部署MinIO對(duì)象存儲(chǔ)服務(wù)的最新實(shí)戰(zhàn)指南

    MinIO作為高性能的云原生對(duì)象存儲(chǔ)服務(wù),結(jié)合Docker容器技術(shù)可以快速搭建企業(yè)級(jí)存儲(chǔ)系統(tǒng),本文介紹了從零開始的Docker部署全流程,有需要的可以了解下
    2025-05-05
  • docker部署LNMP&phpMyAdmin的方法步驟

    docker部署LNMP&phpMyAdmin的方法步驟

    這篇文章主要介紹了docker部署LNMP&phpMyAdmin的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Docker搭建OpenLDAP+phpLDAPadmin統(tǒng)一用戶認(rèn)證的方法

    Docker搭建OpenLDAP+phpLDAPadmin統(tǒng)一用戶認(rèn)證的方法

    這篇文章主要介紹了Docker搭建OpenLDAP+phpLDAPadmin統(tǒng)一用戶認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • docker之創(chuàng)建MariaDB鏡像的方法

    docker之創(chuàng)建MariaDB鏡像的方法

    這篇文章主要介紹了docker之創(chuàng)建MariaDB鏡像,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • docker cp 拷貝文件 和 進(jìn)入容器的操作

    docker cp 拷貝文件 和 進(jìn)入容器的操作

    這篇文章主要介紹了docker cp 拷貝文件 和 進(jìn)入容器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 批量刪除docker過期停止的容器的四種方法

    批量刪除docker過期停止的容器的四種方法

    過期的容器也是占用一部分的內(nèi)存空間,這時(shí)候如果對(duì)應(yīng)一個(gè)個(gè)刪除容器id,有些麻煩,有沒有方法對(duì)應(yīng)將其批量刪除呢,本文給大家介紹了批量刪除docker過期停止的容器的四種方法,需要的朋友可以參考下
    2024-02-02
  • docker網(wǎng)絡(luò)端口映射的實(shí)現(xiàn)步驟

    docker網(wǎng)絡(luò)端口映射的實(shí)現(xiàn)步驟

    本文主要介紹了docker網(wǎng)絡(luò)端口映射的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Docker教程之dockerfile構(gòu)建centos鏡像

    Docker教程之dockerfile構(gòu)建centos鏡像

    這篇文章主要介紹了Docker教程之dockerfile構(gòu)建centos鏡像的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • kali安裝docker及搭建漏洞環(huán)境的詳細(xì)教程

    kali安裝docker及搭建漏洞環(huán)境的詳細(xì)教程

    Docker?是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化,本文重點(diǎn)給大家介紹kali安裝docker及搭建漏洞環(huán)境的過程,感興趣的朋友一起看看吧
    2022-05-05

最新評(píng)論

凤台县| 肇东市| 邯郸县| 安泽县| 安康市| 安阳县| 巴青县| 科尔| 民权县| 淳化县| 安泽县| 长治市| 东源县| 保康县| 道真| 金塔县| 方山县| 读书| 常州市| 岑溪市| 马龙县| 莫力| 徐州市| 宜兴市| 澄江县| 开封市| 福鼎市| 高唐县| 呼图壁县| 乌什县| 敦煌市| 巴彦淖尔市| 东山县| 抚顺县| 应用必备| 铁岭市| 娄底市| 建宁县| 勐海县| 正镶白旗| 华池县|