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
相关推荐
m0_748236583 小时前
RabbitMQ 客户端 连接、发送、接收处理消息
分布式·rabbitmq·ruby
嗑瓜子儿溜茶水儿4 小时前
docker 部署 NginX
nginx·docker·容器
G_whang5 小时前
mac m2 安装 docker
macos·docker·容器
明 庭10 小时前
在 Ubuntu 下通过 Docker 部署 MySQL 服务器
服务器·ubuntu·docker
Mr.朱鹏10 小时前
操作018:Stream Queue
java·spring boot·spring·spring cloud·java-ee·rabbitmq·maven
leilifengxingmw11 小时前
Docker学习相关笔记,持续更新
笔记·学习·docker
AUGENSTERN_dc12 小时前
RabbitMQ 快速入门
中间件·rabbitmq·java-rabbitmq
童安格粉丝13 小时前
Docker图形化界面工具Portainer最佳实践
运维·redis·docker·容器·portainer·实践·详解
噎住佩奇13 小时前
Fabric部署-docker-compose安装
docker·fabric
蓝天~白云14 小时前
docker 更换存储路径
运维·docker·容器