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
相关推荐
tonngw2 小时前
【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示
macos·docker·容器·开源·github·docker desktop·orbstack
debug 小菜鸟4 小时前
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
docker·云计算·aws
SpikeKing5 小时前
Server - 使用 Docker 配置 PyTorch 研发环境
pytorch·docker·llm
Chan165 小时前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
小鸡脚来咯6 小时前
RabbitMQ入门
分布式·rabbitmq
斯普信云原生组6 小时前
Docker构建自定义的镜像
java·spring cloud·docker
2201_761199046 小时前
k8s4部署
云原生·容器·kubernetes
小柏ぁ7 小时前
calico/node is not ready: BIRD is not ready: BGP not established with xxx
运维·docker·kubernetes
三劫散仙8 小时前
kubernetes jenkins pipeline优化拉取大仓库性能指定分支+深度
容器·kubernetes·jenkins
西京刀客8 小时前
k8s热更新-subPath 不支持热更新
云原生·容器·kubernetes·configmap·subpath