服务器 > 服务器 > 云虚拟主机

Docker 搭建 RabbitMQ的详细过程

8人参与 2025-04-24 云虚拟主机

前言

在现代微服务与分布式架构中,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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Linux搭建Docker环境的详细过程(最新推荐)

04-24

一步到位的Docker全平台安装完整指南(Windows/Mac/Linux)

04-24

让非root用户构建Docker镜像的三种方法

04-24

docker 部署 时序数据库TDengine的思路详解

04-24

docker-compose编排单体nacos、rabbitmq、redis基础服务详解

04-24

docker 安装TDengine 时序数据库的技术指南

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论