1、Rabbitmq 搜索,下载,查看
# 搜索镜像
docker search rabbitmq:management
# 下载镜像 (注意:如果不带management,启动rabbitmq后无法打开管理页面)
docker pull rabbitmq:management
# 查看镜像
docker images
2、新建 Rabbitmq 配置文件夹
mkdir -p /home/20221125/myrabbitmq/{data,conf,log,enabled_plugins}
# 创建完成之后要对所创建文件授权权限,都设置成 777 否则在启动容器的时候容易失败
chmod -R 777 /home/20221125/myrabbitmq
# 挂载文件需要执行
chown -R 999:999 /home/20221125/myrabbitmq
chown -R 999:999 /home/20221125/myrabbitmq/conf
chown -R 999:999 /home/20221125/myrabbitmq/log
chown -R 999:999 /home/20221125/myrabbitmq/data
# 挂载文件需要执行
chmod 600 /home/20221125/myrabbitmq/data/.erlang.cookie
3、生成容器,先不挂载
docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
# 参数说明:
-e RABBITMQ_DEFAULT_USER:设置用户名;
-e RABBITMQ_DEFAULT_PASS:设置密码;
# 默认用户、密码
默认用户:guest
默认密码:guest
# 进入容器
docker exec -it rabbitmq /bin/bash
ls -l
# 配置文件目录
cd /etc/rabbitmq
# 数据存储目录
cd /var/lib/rabbitmq
# 日志目录
cd /var/log/rabbitmq
# 查看插件列表
rabbitmq-plugins list
4、容器文件 复制到 宿主机
# 容器文件 复制到 宿主机
docker cp <容器路径> <宿主机路径>
docker cp rabbitmq:/etc/rabbitmq /home/20221125/myrabbitmq/conf
docker cp rabbitmq:/var/log/rabbitmq /home/20221125/myrabbitmq/log
docker cp rabbitmq:/var/lib/rabbitmq /home/20221125/myrabbitmq/data
docker cp rabbitmq:/etc/rabbitmq/enabled_plugins /home/20221125/myrabbitmq/enabled_plugins
# 宿主机上创建rabbitmq用户
useradd rabbitmq
5、删除刚才创建的 rabbitmq 容器
# 直接执行docker rm rabbitmq或者以容器id方式关闭容器
# 找到 rabbitmq 对应的容器id
docker ps -a
# 关闭容器
docker stop rabbitmq
# 删除容器
docker rm rabbitmq
# 删除正在运行的 rabbitmq 容器
docker rm -f rabbitmq
# 停止和删除容器
docker stop rabbitmq && docker rm rabbitmq
# 重启容器
docker restart rabbitmq
6、重新生成容器,设置用户名和密码
docker run -di --name first_rabbitmq \
-p 5672:5672 -p 5671:5671 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
--hostname my-rabbit \
--restart=always \
rabbitmq:management
# 参数说明:
-d:表示在后台运行容器;
-p 15672:15672 rabbitmq management管理界面默认访问端口,(控制台Web端口号)映射到主机中
-p 15671:15671 management监听端口,前台浏览器的控制页面
-p 5671:5671 AMQP 0-9-1 without and with TLS
-p 5672:5672 应用访问端口
-p 4369:4369 (epmd)epmd 代表 Erlang 端口映射守护进程
-p 25672:25672 Erlang Distribution
-e:指定环境变量:
-e RABBITMQ_DEFAULT_VHOST:默认虚拟机名;
-e RABBITMQ_DEFAULT_USER:设置用户名;
-e RABBITMQ_DEFAULT_PASS:设置密码;
--hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 节点名称 存储数据,默认为主机名);
--name first_rabbitmq:设置容器名称;
rabbitmq:management:容器使用的镜像名称;
# 查看容器IP地址
docker inspect first_rabbitmq
docker inspect first_rabbitmq | grep 'IPAddress'
# 查看容器 hostname、ip地址、环境变量
docker exec first_rabbitmq hostname
docker exec first_rabbitmq ip addr
docker exec first_rabbitmq env
# 进入容器
docker exec -it first_rabbitmq /bin/bash
ls -l
# 配置文件目录
cd /etc/rabbitmq
# 数据存储目录
cd /var/lib/rabbitmq
# 日志目录
cd /var/log/rabbitmq
# 查看插件列表
rabbitmq-plugins list
# 查看启动日志
docker logs first_rabbitmq
docker logs -f -t --since="2022-11-27" --tail=10000 first_rabbitmq
# 添加用户
rabbitmqctl add_user test 123456
# 查看所有用户
rabbitmqctl list_users
# 浏览器访问 localhost:15672 失败,需要开启后台管理插件
docker exec -it first_rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
7、检查是否安装成功
# 打开浏览器,地址栏输入 http://宿主机IP:15672
http://172.17.0.3:15672
# 默认
默认用户:guest
默认密码:guest
# 自定义
默认用户:admin
默认密码:admin
8、重新生成容器,挂载文件【只能挂载data,log,不能挂载conf配置文件】
docker run -di --name first_rabbitmq -p 5672:5672 -p 5671:5671 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v /home/20221125/myrabbitmq/data:/var/lib/rabbitmq \
-v /home/20221125/myrabbitmq/log:/var/log/rabbitmq \
--hostname my-rabbit \
--restart=always \
rabbitmq:management
# 挂载配置文件报错
-v /home/20221125/myrabbitmq/conf:/etc/rabbitmq
9、设置 docker 启动的时候自动启动(可选)
docker update first_rabbitmq --restart=always
10、关闭删除 rabbitmq 容器
# 关闭容器
docker stop first_rabbitmq
# 删除容器
docker rm first_rabbitmq
# 停止和删除容器
docker stop first_rabbitmq && docker rm first_rabbitmq
# 重启容器
docker restart first_rabbitmq
11、数据包转发
# 跳转目录
cd /usr/lib/sysctl.d
# 查看文件
cat /usr/lib/sysctl.d/50-default.conf
# 编辑文件
vim /usr/lib/sysctl.d/50-default.conf
# 末尾添加内容
net.ipv4.ip_forward = 1
# 重启network
systemctl restart network
12、防火墙、开放端口
# 查看防火墙状态
systemctl status firewalld
或
firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙(慎用)
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 开放指定端口
firewall-cmd --zone=public --add-port=5672/tcp --add-port=15672/tcp --permanent
# 关闭指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 立即生效
firewall-cmd --reload
# 查看开放的端口
firewall-cmd --zone=public --list-ports
docker-compose
# Step 1: 创建 docker-compose.yml 文件
cd /home/20221125/myrabbitmq
vim docker-compose.yml
# Step 2: 编辑内容如下
version: '3.0'
services:
rabbitmq_master_server:
image: rabbitmq:management
container_name: rabbitmq_master
restart: always
privileged: true
hostname: rabbitmq_master
extra_hosts:
- "rabbitmq-master:192.168.1.201"
- "rabbitmq-slave:192.168.1.202"
environment:
- RABBITMQ_DEFAULT_USER: admin
- RABBITMQ_DEFAULT_PASS: 123456
- RABBITMQ_ERLANG_COOKIE=SaturnABCDEFGHIJKLMNOPQRSTUVWXYZ1026
ports:
- 5672:5672
- 15672:15672
- 4369:4369
- 25672:25672
volumes:
- /home/20221125/myrabbitmq/data:/var/lib/rabbitmq
- /home/20221125/myrabbitmq/conf:/etc/rabbitmq
- /home/20221125/myrabbitmq/log:/var/log/rabbitmq
# Step 3: 执行命令
docker-compose up -d
docker-compose -f docker-compose-rabbitmq.yml up -d
*
*
*