# Docker RabbitMQ
RabbitMQ 的 Docker 镜像在 dockerhub 上的网址:https://hub.docker.com/_/rabbitmq (opens new window)
当前(2021-12-17)的 latest 和 3.9.11 是同一个镜像 。
不过,我们选择带有 management 的版本的镜像,因为其中包含 web 管理页面。例如:rabbitmq:3.9.11-management 。
# 1. 安装及测试
# 查询中央仓库
docker search -f is-official=true rabbitmq
# 从中央仓库下载
docker pull rabbitmq:3.9.11-management
# 或,直接导入已有的镜像文件
# docker load -i rabbitmq-3.9.11-management.tar
# 查看本地镜像
docker images
# 会出现类似如下内容:
# REPOSITORY TAG IMAGE ID CREATED SIZE
# rabbitmq 3.8.21-management b752ffe108c3 34 hours ago 249MB
# rabbitmq 3.8.21 7c1815579c8b 34 hours ago 216MB
运行容器:
# 删除曾经已有的同名容器
docker rm -f rabbitmq-test
# 创建并运行 rabbitmq 容器的语法
docker run \
-d \
--name <指定容器名> \
-p <指定宿主机端口>:5672 \
rabbitmq:3.9.11-management
例如:
docker run \
-d \
--name rabbitmq-test \
-p 5672:5672 \
-p 15672:15672 \
rabbitmq:3.9.11-management
# docker run -d --name rabbitmq-test -p 5672:5672 -p 15672:15672 rabbitmq:3.9.11-management
验证安装成功
通过 docker ps 命令查看容器的运行信息:
docker ps
会看到类似如下信息:
略
访问 management web 管理系统。
由于我们使用的是 management 镜像创建的容器,因此,容器自带了后台管理系统。我们可以通过我们映射的 15672 端口访问。
访问网址
http://宿主机IP:15672
,使用 guest / guest 登录。有一点点延迟,启动容器后稍等片刻。注意,虽然用户名是叫 guest ,但是它的角色是管理员 administrator 。
当然,你也可以手动指定登录管理系统的用户名和密码:
docker run \ ... \ -e RABBITMQ_DEFAULT_USER=<自定义用户名> \ -e RABBITMQ_DEFAULT_PASS=<自定义密码> \ rabbitmq:3.9.11-management
# 2. 配置与挂载
Docker RabbitMQ 的 “配置文件” 在容器中的
/etc/rabbitmq/rabbitmq.config
Docker RabbitMQ 的 “数据存储目录”
取决于 docker run 命令中的 --hostname 属性的属性值的值。
当我们没有在 docker run 命令中使用 --hostname 属性时,docker 会为我们创建的容器随机分配一个 hostname ,例如:
12e22c2be88d
。这种情况下,rabbitmq 的 “数据存储目录” 就是容器中的
/var/lib/rabbitmq/mnesia/rabbit@12e22c2be88d
很显然,如果你不喜欢这种随机性,你可以在 docker run 创建容器时自己指定 --hostname 。
示例
# 删除已存在的同名容器
docker rm -f rabbitmq-5672
# 创建宿主机挂载目录
mkdir -p ~/docker/rabbitmq/5672/data
# 创建并运行容器
docker run \
-d \
--hostname rabbitmq-5672 \
--name rabbitmq-5672 \
-p 5672:5672 \
-p 15672:15672 \
-v ~/docker/5672/data:/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-5672 \
# -v ~/docker/5672/data:/var/lib/rabbitmq \
rabbitmq:3.9.11-management
# 3. docker-compose 启动
version: '3'
services:
rabbitmq:
image: rabbitmq:3.9.11-management
container_name: rabbitmq
hostname: rabbitmq-5672
environment:
- RABBITMQ_DEFAULT_USER=root
- RABBITMQ_DEFAULT_PASS=123456
volumes:
- ~/docker/5672/data:/var/lib/rabbitmq
ports:
- "5672:5672"
- "15672:15672"