Docker安装RabbitMQ

Docker安装RabbitMQ

准备工作

  1. 先准备配置目录和持久化目录,举个栗子:mkdir -p /opt/module/rabbitmq/{data,logs,conf,plugins}

拉取官方RabbitMQ镜像

bash 复制代码
# 拉取 rabbitmq:3.8.23-management
docker pull rabbitmq:3.8.23-management
# 拉取最新版rabbitmq镜像
docker pull rabbitmq

启动一个临时容器【通过创建一个临时的测试容器,用来复制配置文件,来反推配置】

bash 复制代码
docker run -d \
-p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
--name rabbitmq rabbitmq:3.8.23-management

rabbitmq运行在docker容器中对应的目录如下:

  • rabbitmq.conf配置文件:/etc/rabbitmq/rabbitmq.conf
  • rabbitmq配置文件夹:/etc/rabbitmq
  • 日志目录:/var/log/rabbitmq
  • 数据目录:/var/lib/rabbitmq
    了解rabbitmq在docker中运行的目录地址是为了把他们给复制到宿主机的目录下
  • 插件目录:/plugins
复制rabbitmq的配置文件到宿主机中
bash 复制代码
# 将容器中的 rabbitmq配置文件夹 下内容复制到宿主机
docker cp rabbitmq:/etc/rabbitmq  /opt/module/rabbitmq/conf

# 将容器中的 rabbitmq数据文件夹 复制到宿主机【可以不执行】
docker cp rabbitmq:/var/lib/rabbitmq  /opt/module/rabbitmq/data

# 将容器中的log文件夹复制到宿主机【可以不执行】
docker cp rabbitmq:/var/log/rabbitmq  /opt/module/rabbitmq/logs
bash 复制代码
docker cp rabbitmq:/etc/rabbitmq     /opt/module/rabbitmq/conf
docker cp rabbitmq:/opt/rabbitmq/plugins     /opt/module/rabbitmq
移除临时容器
bash 复制代码
docker stop rabbitmq
docker rm rabbitmq

运行镜像

bash 复制代码
docker run -d \
-p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v /opt/module/rabbitmq/data:/var/lib/rabbitmq \
-v /opt/module/rabbitmq/plugins:/opt/rabbitmq/plugins \
-v /opt/module/rabbitmq/logs:/var/log/rabbitmq \
-v /opt/module/rabbitmq/conf/rabbitmq:/etc/rabbitmq \
--restart=always \
--hostname rabbitmq_master \
--name rabbitmq rabbitmq:3.8.23-management
  • -d: 指定容器以"后台"模式运行,即在后台运行容器。
  • -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883: 将容器内部的端口映射到宿主机的端口。这里列出了5个端口映射:
    • 15672:15672: RabbitMQ的管理控制台端口。
    • 5672:5672: RabbitMQ的AMQP端口,用于客户端连接。
    • 25672:25672: RabbitMQ的内部通信端口。
    • 61613:61613: 用于STOMP协议的端口。
    • 1883:1883: 用于MQTT协议的端口。
  • -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin: 设置RabbitMQ默认用户和密码。在这里,用户名设置为"admin",密码也设置为"admin"。
  • -v /opt/module/rabbitmq/data:/var/lib/rabbitmq: 将宿主机的目录挂载到容器中,用于持久化存储RabbitMQ的数据。
  • -v /opt/module/rabbitmq/plugins:/opt/rabbitmq/plugins: 将宿主机的目录挂载到容器中,用于加载RabbitMQ插件。
  • -v /opt/module/rabbitmq/logs:/var/log/rabbitmq: 将宿主机的目录挂载到容器中,用于存储RabbitMQ的日志。
  • -v /opt/module/rabbitmq/conf/rabbitmq:/etc/rabbitmq: 将宿主机的RabbitMQ配置文件目录挂载到容器中,以便覆盖默认的RabbitMQ配置。
  • --restart=always: 设置容器始终在退出时重新启动。
  • --hostname rabbitmq_master: 指定容器的主机名为"rabbitmq_master"。
  • --name rabbitmq: 指定容器的名称为"rabbitmq"。
  • rabbitmq:3.8.23-management 是指要使用的 RabbitMQ 镜像的名称和标签。在这个例子中,使用的是 RabbitMQ 的版本为 3.8.23,并且带有管理插件的镜像。通过添加 -management 标签,该镜像将包含 RabbitMQ 的管理界面,您可以通过访问 http://<宿主机IP>:15672 来查看和管理 RabbitMQ。

注:前者是外围访问端口:后者是容器内部端口

如下命令可后台启动tomcat
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

查看启动日志

bash 复制代码
#docker logs [服务id/服务名]
docker logs rabbitmq

docker logs -f -t --tail 20 rabbitmq

查看防火墙【开放端口】

bash 复制代码
# 查询端口是否开放
firewall-cmd --query-port=15672/tcp
firewall-cmd --query-port=5672/tcp
firewall-cmd --query-port=25672/tcp
firewall-cmd --query-port=61613/tcp
firewall-cmd --query-port=1883/tcp

# 开放端口
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --permanent --add-port=61613/tcp
firewall-cmd --permanent --add-port=1883/tcp

# 移除端口
firewall-cmd --permanent --remove-port=15672/tcp
firewall-cmd --permanent --remove-port=5672/tcp
firewall-cmd --permanent --remove-port=25672/tcp
firewall-cmd --permanent --remove-port=61613/tcp
firewall-cmd --permanent --remove-port=1883/tcp

# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 查看已经开发那些端口
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports

进入RabbitMQ容器内部

bash 复制代码
docker ps     # 查看正在运行的容器,并得到 容器id

# 进入tomcat容器内部
docker exec -it [容器id] /bin/bash  # 中间那个是容器id 就是 CONTAINER_ID
#  -it 表示进入
bash 复制代码
docker exec -it rabbitmq bash
docker exec -it rabbitmq /bin/bash
bash 复制代码
# 使用 命令别名 开启 ll命令
cat <<EOF >> /etc/profile
alias ll='ls -l --color=tty'
alias grep='grep --color=auto'
EOF

source /etc/profile
bash 复制代码
#进入容器激活后台管理插件
docker exec -it rabbitmq /bin/bash

#激活后台管理插件
rabbitmq-plugins enable rabbitmq_management

查看docker下的ip地址

bash 复制代码
docker inspect [container_id 容器id]
或
docker inspect [container_id 容器id] | grep ip address

docker inspect --format='{{.NetworkSettings.IPAddress}}' tomcat

测试

bash 复制代码
#浏览器中服务器
http://虚拟机IP:15672
账号:admin
密码:admin

卸载

bash 复制代码
#停止rabbitmq服务(也可以停止其他)
#docker stop [容器id/容器名]
docker stop rabbitmq

#删除rabbitmq服务(也可以删除其他)
#docker rm [服务id/服务名]
docker rm rabbitmq

#删除rabbitmq镜像
#docker rmi [镜像id/镜像名]
docker rmi rabbitmq
相关推荐
Tronlong创龙7 小时前
SBC-TL3588 单板机 / EPC-TL3588 工控机 Docker 开发手册(二)
docker·开发板·嵌入式开发·硬件开发·工业控制
AI服务老曹12 小时前
视觉算法模型管理完整流程:多版本上线、灰度发布与回滚的落地实践
人工智能·docker·音视频
飞翔沫沫情13 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes
辉的技术笔记14 小时前
拆解 Dify 的 Celery:15 个队列都在干什么
docker
潮起鲸落入海19 小时前
Kubernetes Metric Server, Quota and Limits
容器·kubernetes
梦想的颜色19 小时前
Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill
运维·容器·ai 工程化·沙盒隔离·docker 本地部署·claude code硬核实战·国内国产模型接入
渣渣盟20 小时前
Docker 运维常用命令手册(含扩容与实战)
运维·docker·容器
小尘要自信20 小时前
小米摄像头怎么接入RTSP?Go2RTC转流、EasyNVR录像与公网访问教程
人工智能·docker·开源
sukioe21 小时前
从 0 到 1 构建城市公共设施智能报修与派单系统:FastAPI + Vue3 + RabbitMQ + Redis Geo + AI 工作流实践
redis·rabbitmq·fastapi
我叫张小白。21 小时前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构