docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker 搭建 RabbitMQ

Docker 搭建 RabbitMQ的详细过程

作者:代码怪兽大作战

在现代微服务与分布式架构中,RabbitMQ 是一款成熟的开源消息队列中间件,提供了可靠的消息投递、丰富的路由策略和管理插件,本文将详细介绍Docker 搭建 RabbitMQ的过程,感兴趣的朋友一起看看吧

前言

在现代微服务与分布式架构中,RabbitMQ 是一款成熟的开源消息队列中间件,提供了可靠的消息投递、丰富的路由策略和管理插件。通过 Docker 部署 RabbitMQ,可以快速搭建、轻松扩展,并与容器化平台无缝集成。

本文将指导你通过 Docker 快速搭建一个 RabbitMQ 环境,讲解目录结构、启动脚本编写、参数详解,以及两种网络模式(Host 网络模式 vs Port 映射模式)的部署示例与对比。

一、准备工作

首先,确保你的系统上已经安装了 Docker。

Linux上进行Docker安装有两种方式:

可以根据该文章的步骤进行安装:https://www.jb51.net/server/339879ek2.htm

二、设置目录结构

为了持久化存储日志、数据和配置,需要在宿主机上创建对应目录,并赋予 RabbitMQ 容器内部用户(UID 999)的写权限。

# 创建日志、数据和配置目录
mkdir -p "$DIR/rabbitmq/log"
mkdir -p "$DIR/rabbitmq/data"
mkdir -p "$DIR/rabbitmq/conf"
# 设置目录权限为容器内 rabbitmq 用户(UID 999)
sudo chown -R 999:999 \
  "$DIR/rabbitmq/log" \
  "$DIR/rabbitmq/data" \
  "$DIR/rabbitmq/conf"

三、编写启动脚本

将目录准备工作与容器运行命令整合到脚本 rabbitmq_install.sh 中,方便一键部署与更新。

#!/bin/bash
# 安装路径与容器名称
DIR="/opt/docker/demo"
DOCKER_NAME="docker-rabbitmq"
# 创建目录并设置权限
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"
# 运行 RabbitMQ 容器(Host 网络模式)
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                         # 官方管理版镜像

保存后,赋予执行权限并运行:

chmod +x run_rabbitmq.sh
./run_rabbitmq.sh

解释各个参数

四、Host 网络模式 vs Port 映射模式

1. Host 网络模式

命令示例

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

特点

优点

缺点

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

含义

优点

缺点

五、端口配置对比

特性Host 网络模式Port 映射模式
配置命令--network host-p host:container
网络性能最佳,无 NAT 转发开销有少量转发开销
端口冲突风险高,容器直接占用宿主机端口低,可自定义宿主机端口
安全隔离较弱较强
多容器端口复用不支持支持,不同容器映射到不同端口
配置复杂度简单需要显式映射

六、配置示例

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].

七、查看与管理

查看容器状态

docker ps | grep "$DOCKER_NAME"

查看日志

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

访问管理控制台

浏览器访问 http://<宿主机IP>:15672,使用 admin/admin123456 登录。

八、扩展与高可用

集群部署

镜像队列与策略

监控与告警

九、常用命令

修改默认密码

如果需要修改 RabbitMQ 的默认密码,可以使用以下命令:

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

请将 newpassword 替换为希望设置的新密码。

启用其他插件

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

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

请将 <plugin_name> 替换为希望启用的插件名称。

到此这篇关于Docker 搭建 RabbitMQ的详细过程的文章就介绍到这了,更多相关Docker 搭建 RabbitMQ内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文