Docker安装RabbitMQ
准备工作
- 先准备配置目录和持久化目录,举个栗子:
mkdir -p /opt/module/rabbitmq/{data,logs,conf,plugins}
拉取官方RabbitMQ镜像
# 拉取 rabbitmq:3.8.23-management
docker pull rabbitmq:3.8.23-management
# 拉取最新版rabbitmq镜像
docker pull rabbitmq
启动一个临时容器【通过创建一个临时的测试容器,用来复制配置文件,来反推配置】
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的配置文件到宿主机中
# 将容器中的 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
docker cp rabbitmq:/etc/rabbitmq /opt/module/rabbitmq/conf
docker cp rabbitmq:/opt/rabbitmq/plugins /opt/module/rabbitmq
移除临时容器
docker stop rabbitmq
docker rm rabbitmq
运行镜像
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 同时使用;
查看启动日志
#docker logs [服务id/服务名]
docker logs rabbitmqdocker logs -f -t --tail 20 rabbitmq
查看防火墙【开放端口】
# 查询端口是否开放
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容器内部
docker ps # 查看正在运行的容器,并得到 容器id# 进入tomcat容器内部
docker exec -it [容器id] /bin/bash # 中间那个是容器id 就是 CONTAINER_ID
# -it 表示进入
docker exec -it rabbitmq bash
docker exec -it rabbitmq /bin/bash
# 使用 命令别名 开启 ll命令
cat <<EOF >> /etc/profile
alias ll='ls -l --color=tty'
alias grep='grep --color=auto'
EOFsource /etc/profile
#进入容器激活后台管理插件
docker exec -it rabbitmq /bin/bash#激活后台管理插件
rabbitmq-plugins enable rabbitmq_management
查看docker下的ip地址
docker inspect [container_id 容器id]
或
docker inspect [container_id 容器id] | grep ip addressdocker inspect --format='{{.NetworkSettings.IPAddress}}' tomcat
测试
#浏览器中服务器
http://虚拟机IP:15672
账号:admin
密码:admin
卸载
#停止rabbitmq服务(也可以停止其他)
#docker stop [容器id/容器名]
docker stop rabbitmq#删除rabbitmq服务(也可以删除其他)
#docker rm [服务id/服务名]
docker rm rabbitmq#删除rabbitmq镜像
#docker rmi [镜像id/镜像名]
docker rmi rabbitmq