1、拉取镜像
management:表示可以通过web页面管理。
alpine:表示是linux最小版本,不推荐新手安装。
docker pull rabbitmq:management
2、创建用于挂载的目录
mkdir -p /mydata/rabbitmq/{data,conf,log}
# 创建完成之后要对所创建文件授权权限,都设置成777 否则在启动容器的时候容易失败
chmod -R 777 /mydata/rabbitmq
3、获取配置文件
3.1创建临时容器
docker run -d --name rabbitmq1 --restart=always --hostname=rabbitmqhost \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-p 5672:5672 -p 15672:15672 \
rabbitmq:management
3.2 复制配置文件到宿主机
docker cp rabbitmq1:/etc/rabbitmq/ /mydata/rabbitmq/conf
3.3 删除临时容器
docker stop rabbitmq1
docker rm rabbitmq1
4、使用镜像创建容器
docker run -d --name rabbitmq --restart=always --hostname=rabbitmqhost \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-v /mydata/rabbitmq/data:/var/lib/rabbitmq -v /mydata/rabbitmq/conf:/etc/rabbitmq -v /mydata/rabbitmq/log:/var/log/rabbitmq \
-p 5672:5672 -p 15672:15672 \
rabbitmq:management
–restart=always :表示随着Docker容器重启
-e :指定环境变量 RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码,rabbitmq默认账号和密码是guest
--hostname :主机名
-p :端口映射
-v :文件挂载
-d :表示后台运行
–name rabbitmq :表示启动后的容器实例名称为rabbitmq
4.1 设置主机名的作用 (–hostname=rabbitmqhost)
RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名
4.2 设置虚拟机名(-e RABBITMQ_DEFAULT_VHOST=my_vhost)的作用
5、端口说明
- 4369:RabbitMQ节点和CLI工具使用的对等发现服务
- 5672、5671:由不带和带 TLS 的 AMQP 0-9-1 和 AMQP 1.0 客户端使用
- 5552、5551:由不带和带 TLS 的RabbitMQ Stream 协议客户端使用
- 6000 ~ 6500:由RabbitMQ 流复制使用
- 25672:用于节点间和 CLI 工具通信(Erlang 分发服务器端口)并从动态范围分配(默认限制为单个端口,计算为 AMQP 端口 + 20000)。除非确实需要这些端口上的外部连接(例如集群使用联合或在子网外的机器上使用 CLI 工具),否则不应公开这些端口。
- 35672 ~ 35682:由 CLI 工具(Erlang 分发客户端端口)用于与节点通信,并从动态范围(计算为 (Erlang 分发服务器端口 + 10000) ~ (Erlang 分发服务器端口 + 10010) )进行分配。
- 15672、15671:由不带和带TLS的HTTP API客户端、管理 UI和rabbitmqadmin使用(仅当管理插件启用时)
- 61613、61614:由不带和带TLS 的STOMP 客户端(仅当启用STOMP 插件时)
- 1883、8883:由不带和带TLS 的MQTT 客户端使用(仅当启用了MQTT 插件)
- 15674:STOMP-over-WebSockets 客户端(仅当启用Web STOMP 插件时)
- 15675:MQTT-over-WebSockets 客户端(仅当启用Web MQTT 插件时)
- 15692:Prometheus 指标(仅当启用Prometheus 插件时)