Docker安装部署RabbitMQ

1. Docker环境准备

1.1 安装Docker

在开始Docker安装部署RabbitMQ之前,确保您的系统环境已经满足Docker的运行要求。以下是在不同操作系统上安装Docker的步骤和命令行演示。

对于Linux系统

在基于Debian的系统(如Ubuntu)上,您可以使用以下命令来安装Docker:

复制代码
sudo apt-get update
sudo apt-get install -y docker.io

安装完成后,启动Docker服务并将其设置为开机启动:

复制代码
sudo systemctl start docker
sudo systemctl enable docker

验证Docker是否正确安装:

复制代码
docker --version
对于macOS系统

macOS用户可以通过Docker Desktop for Mac来安装Docker。访问Docker Desktop官网下载安装包,按照安装向导完成安装。

安装完成后,打开Docker Desktop应用,它将自动启动Docker服务。

对于Windows系统

Windows 10及以上版本的用户可以通过Docker Desktop for Windows来安装Docker。同样地,访问Docker Desktop官网下载安装包并按照安装向导完成安装。

安装完成后,打开Docker Desktop应用,它将自动启动Docker服务。

验证Docker安装

在任何操作系统上,您可以通过运行以下命令来验证Docker是否已经正确安装并运行:

复制代码
docker run hello-world

此命令将下载一个测试镜像并在容器中运行,如果Docker安装正确,您将看到欢迎消息。

完成以上步骤后,您的Docker环境就已经准备就绪,可以继续进行RabbitMQ的安装和部署。

2. 拉取RabbitMQ镜像

2.1 拉取最新镜像

为了在Docker环境中部署RabbitMQ,首先需要从Docker Hub拉取RabbitMQ的官方镜像。RabbitMQ提供了多个版本的镜像,包括带有管理界面的版本和不带管理界面的版本。以下是拉取RabbitMQ最新镜像的命令行演示:

复制代码
docker pull rabbitmq:latest

此命令将从Docker Hub下载RabbitMQ的最新版本镜像。使用latest标签可以确保您获得最新的镜像,但如果您需要特定版本的RabbitMQ,可以通过指定版本号来拉取,例如rabbitmq:3.8.16

2.2 验证镜像

拉取镜像后,您可以通过以下命令来验证是否成功拉取了RabbitMQ镜像:

复制代码
docker images

此命令将列出本地所有已下载的Docker镜像,您可以在列表中查找rabbitmq相关的条目,确认是否包含您刚刚拉取的镜像。输出结果将显示镜像的REPOSITORY、TAG、IMAGE ID、CREATED、SIZE等信息。例如:

在确认镜像已经成功拉取后,您可以继续进行RabbitMQ容器的创建和配置。这包括设置容器的网络、存储、环境变量等,以确保RabbitMQ容器能够按照您的需求运行。接下来的步骤将详细介绍如何创建并运行RabbitMQ容器。

3. 启动RabbitMQ容器

3.1 创建容器

创建RabbitMQ容器是部署过程中的关键步骤,以下是创建RabbitMQ容器的命令行演示:

复制代码
docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672 rabbitmq:latest

此命令将创建一个名为rabbitmq的容器,并在后台运行。

-d:参数表示容器将在后台运行,

--name:参数用于指定容器的名称。

-p:参数用于设置端口映射,其中5673:5672表示将容器的5672端口映射到宿主机的5673端口,15673:15672表示将容器的15672端口映射到宿主机的15673端口,这两个端口分别是RabbitMQ的消息接收端口和管理界面端口。

3.2 设置端口映射

端口映射是Docker容器与外部通信的重要配置。以下是如何设置端口映射的详细说明:

  • -p 5673:5672:此参数将容器内部的5672端口映射到宿主机的5673端口,这是RabbitMQ用于接收客户端连接的标准AMQP协议端口。
  • -p 15673:15672:此参数将容器内部的15672端口映射到宿主机的15673端口,这是RabbitMQ的管理界面端口,允许用户通过Web界面管理RabbitMQ实例。

确保宿主机的这些端口没有被其他应用占用,否则会导致端口冲突。

3.3 设置环境变量

在创建RabbitMQ容器时,可以通过设置环境变量来配置RabbitMQ的默认用户、密码以及其他参数。以下是如何设置环境变量的命令行演示:

复制代码
docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest

在这个命令中,-e参数用于设置环境变量:

  • RABBITMQ_DEFAULT_USER=admin:设置RabbitMQ的默认用户名为admin
  • RABBITMQ_DEFAULT_PASS=password:设置RabbitMQ的默认密码为password

这些环境变量确保了RabbitMQ容器启动时自动配置好默认的用户凭证,方便用户登录管理界面。您可以根据需要修改用户名和密码,以满足安全要求。

4. 验证RabbitMQ服务

4.1 查看容器状态

在RabbitMQ容器创建并运行后,您可以通过查看容器的状态来验证RabbitMQ服务是否正常启动。以下是如何查看容器状态的命令行演示:

复制代码
docker ps

此命令将列出所有正在运行的容器。在输出结果中,您可以查找名为rabbitmq的容器,确认其STATUS列显示为Up,这表示容器正在正常运行。例如:

复制代码
[root@bogon /]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                                                                                                                      NAMES
7a462270fd11   rabbitmq:latest   "docker-entrypoint.s..."   8 seconds ago   Up 6 seconds   4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, :::5673->5672/tcp, 0.0.0.0:15673->15672/tcp, :::15673->15672/tcp   rabbitmq

如果容器状态显示为Up,并且端口映射正确,那么RabbitMQ服务已经成功启动。

4.2 查看容器日志

除了查看容器状态外,查看容器日志也是验证RabbitMQ服务是否正常运行的重要步骤。以下是如何查看容器日志的命令行演示:

复制代码
docker logs rabbitmq

此命令将显示名为rabbitmq的容器的日志输出。通过检查日志,您可以确认RabbitMQ是否启动成功,以及是否有任何错误或警告信息。

如果日志中没有显示错误信息,并且有类似上述的启动完成信息,那么RabbitMQ服务已经成功启动并运行。如果遇到任何问题,日志中通常会提供错误信息或提示,帮助您进行故障排查。

5. 访问RabbitMQ管理界面

5.1 打开管理界面

进入容器内部

复制代码
[root@bogon /]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                                                                                                                      NAMES
7a462270fd11   rabbitmq:latest   "docker-entrypoint.s..."   13 minutes ago   Up 13 minutes   4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, :::5673->5672/tcp, 0.0.0.0:15673->15672/tcp, :::15673->15672/tcp   rabbitmq
[root@bogon /]# docker exec -it rabbitmq /bin/bash
root@7a462270fd11:/# 

开启web管理页面

复制代码
root@7a462270fd11:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@7a462270fd11:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_prometheus
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@7a462270fd11...
The following plugins have been enabled:
  rabbitmq_management

started 1 plugins.
root@7a462270fd11:/# 

在RabbitMQ容器成功启动后,可以通过浏览器访问其管理界面来监控和管理RabbitMQ实例。以下是如何打开RabbitMQ管理界面的步骤:

  1. 确认宿主机的IP地址或域名。如果您在本地部署,可以使用localhost127.0.0.1。如果您在远程服务器或虚拟机上部署,需要使用相应的IP地址或域名。

  2. 使用浏览器打开RabbitMQ管理界面。默认情况下,管理界面端口为15673。在浏览器地址栏输入以下URL:

    复制代码
    http://<宿主机IP地址>:15673

    例如,如果您在本地部署,可以访问:

    复制代码
    http://localhost:15673
  3. 等待页面加载完成。如果一切配置正确,您将看到RabbitMQ管理界面的登录页面。

默认账号与密码:guest

5.2 登录默认账户

在RabbitMQ管理界面的登录页面,您需要输入默认的用户名和密码进行登录。以下是登录步骤:

  1. 输入默认的用户名和密码。在创建RabbitMQ容器时,我们通过环境变量RABBITMQ_DEFAULT_USERRABBITMQ_DEFAULT_PASS设置了默认的用户名和密码。如果您没有修改这些环境变量,那么默认的用户名和密码分别是adminpassword。假如你没有设置这个变量,账号与密码:guest

  2. 点击登录按钮。输入正确的用户名和密码后,点击登录按钮,您将进入RabbitMQ管理界面的仪表板。

  3. 管理界面功能概览。登录成功后,您将看到RabbitMQ管理界面的仪表板,这里提供了关于RabbitMQ实例的各种信息,包括节点信息、连接数、队列状态、交换器和绑定等。您可以使用这些工具来监控RabbitMQ的性能,创建和管理队列,以及配置交换器和绑定。

通过以上步骤,您可以成功访问并登录RabbitMQ的管理界面,开始对RabbitMQ实例进行管理和监控。

6. 命令行操作演示

6.1 停止和启动RabbitMQ应用

在Docker中管理RabbitMQ容器的生命周期是一项基本操作,以下是如何停止和启动RabbitMQ容器的命令行演示:

停止RabbitMQ容器

要停止正在运行的RabbitMQ容器,可以使用以下命令:

复制代码
docker stop rabbitmq

此命令将停止名为rabbitmq的容器。您可以使用docker ps命令查看容器状态,确认容器是否已停止。

启动RabbitMQ容器

如果RabbitMQ容器已经停止,您可以通过以下命令启动它:

复制代码
docker start rabbitmq

此命令将启动之前停止的名为rabbitmq的容器。启动后,您可以再次使用docker ps命令查看容器状态,确认容器是否已成功启动。

6.2 查看节点状态

查看RabbitMQ节点状态是监控RabbitMQ健康的重要步骤。以下是如何查看节点状态的命令行演示:

复制代码
docker exec rabbitmq rabbitmqctl status

此命令将进入名为rabbitmq的容器内部,并执行rabbitmqctl status命令,输出RabbitMQ节点的详细信息,包括节点状态、内存使用情况、磁盘空间、Erlang版本等关键信息。输出结果将类似于以下格式:

复制代码
{
  "nodes": [
    "rabbit@hostname",
    ...
  ],
  "running_nodes": [
    "rabbit@hostname",
    ...
  ],
  "cluster_name": "rabbit@hostname",
  "node_type": "disc",
  ...
}

通过这些信息,您可以了解RabbitMQ节点的运行状态和性能指标。

6.3 添加用户和设置权限

管理RabbitMQ用户和权限是确保消息队列安全的关键操作。以下是如何在RabbitMQ中添加用户和设置权限的命令行演示:

添加用户

要添加一个新的用户,可以使用以下命令:

复制代码
docker exec rabbitmq rabbitmqctl add_user username password

username替换为您想要设置的用户名,password替换为相应的密码。此命令将在RabbitMQ实例中创建一个新的用户。

设置用户权限

设置用户权限允许您控制用户对RabbitMQ资源的访问。以下是如何设置用户权限的命令:

复制代码
docker exec rabbitmq rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

在这个命令中,-p /指定了虚拟主机(默认为/),username是您要设置权限的用户名。三个".*"分别代表对资源(queues、exchanges、bindings)的配置、写入和读取权限。您可以根据需要调整这些权限。

通过以上步骤,您可以在RabbitMQ中管理用户和权限,确保消息队列的安全性和合规性。

7. 数据持久化

7.1 挂载数据卷

数据持久化是确保RabbitMQ在容器重启或删除后数据不丢失的关键。Docker提供了卷(volume)功能来实现数据的持久化。通过将容器中的关键数据目录挂载到宿主机上,可以实现数据的持久存储和备份。

  • 挂载数据卷的必要性 :RabbitMQ的数据存储在容器的/var/lib/rabbitmq目录中,如果不进行挂载,容器的删除或重启将导致数据丢失。为了避免这种情况,需要将宿主机的目录挂载到容器的这个目录上。

  • 创建挂载目录 :在宿主机上创建一个专用于RabbitMQ的目录,并确保Docker进程有权访问。例如,在Linux系统上,可以创建一个目录/usr/local/docker/rabbitmq,并设置适当的权限:sudo mkdir -p /usr/local/docker/rabbitmq && sudo chmod 777 /usr/local/docker/rabbitmq

  • 挂载数据卷的命令 :在启动RabbitMQ容器时,使用-v标志将宿主机的目录挂载到容器的/var/lib/rabbitmq目录。例如,docker run -d --name rabbitmq-instance -v /usr/local/docker/rabbitmq:/var/lib/rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management。这条命令将启动一个名为rabbitmq-instance的容器,并将宿主机的/usr/local/docker/rabbitmq目录挂载到容器的/var/lib/rabbitmq目录。

  • 数据卷的优势:使用数据卷有多个优势。首先,即使容器被删除,数据也不会丢失,因为数据存储在宿主机的目录中。其次,数据卷可以在不同的容器间共享,这意味着可以从备份中快速恢复数据。最后,数据卷的备份和恢复操作更简单,因为只需操作宿主机上的目录。

  • 数据备份与恢复 :为了进一步保护数据,应定期备份挂载的数据卷。可以使用docker exec命令在容器内部创建备份,例如:docker exec rabbitmq-instance tar czf /backup/rabbitmq_backup.tar.gz /var/lib/rabbitmq。恢复数据时,将备份文件复制到宿主机的挂载目录中,并解压缩:tar xzf /backup/rabbitmq_backup.tar.gz -C /usr/local/docker/rabbitmq

  • 性能和可靠性:挂载的数据卷性能和可靠性取决于宿主机的文件系统和硬件。为了提高性能,可以考虑使用SSD存储和配置文件系统的最佳实践。为了提高可靠性,可以设置定期备份并测试恢复流程,确保在出现故障时能够快速恢复服务。

通过以上步骤,可以实现RabbitMQ在Docker容器中的数据持久化,确保服务的高可用性和数据的安全性。

8. 备份与恢复

8.1 备份数据命令

在Docker中备份RabbitMQ的数据是确保数据安全性和可恢复性的重要步骤。备份操作可以通过Docker命令行工具执行,具体命令如下:

  • 备份命令 :使用docker exec命令结合tar工具来打包RabbitMQ的数据目录。命令如下:

    复制代码
    docker exec rabbitmq-instance tar czf /backup/rabbitmq_backup.tar.gz /var/lib/rabbitmq

    此命令在名为rabbitmq-instance的容器内执行,将/var/lib/rabbitmq目录下的所有数据打包成一个名为rabbitmq_backup.tar.gz的压缩文件,并存储在容器的/backup目录中。

  • 备份频率:为了确保数据的完整性和一致性,建议定期执行备份操作。具体的备份频率可以根据业务需求和数据变化的频率来确定,例如每天或每周进行一次备份。

  • 备份存储:备份文件可以存储在容器内部、宿主机的某个目录,或者云端对象存储服务中。选择存储位置时,需要考虑数据的安全性、访问速度和成本。

  • 备份验证:备份完成后,建议定期验证备份文件的完整性和可用性。可以通过解压缩备份文件并检查其内容是否完整来完成验证。

8.2 恢复数据命令

在需要恢复RabbitMQ的数据时,可以使用以下命令将备份文件恢复到容器中:

  • 恢复命令 :使用docker exec命令结合tar工具来解压缩备份文件。命令如下:

    复制代码
    docker exec rabbitmq-instance tar xzf /backup/rabbitmq_backup.tar.gz -C /

    此命令在名为rabbitmq-instance的容器内执行,将/backup目录下的rabbitmq_backup.tar.gz备份文件解压缩到容器的根目录下。

  • 恢复前的准备 :在执行恢复操作之前,需要确保RabbitMQ容器已经停止,以避免数据一致性问题。可以使用docker stop rabbitmq-instance命令来停止容器。

  • 恢复操作:恢复操作需要谨慎执行,确保备份文件的版本与当前RabbitMQ版本兼容。如果备份文件是在不同版本的RabbitMQ上创建的,可能需要额外的步骤来迁移数据。

  • 验证恢复 :恢复完成后,启动RabbitMQ容器并验证数据是否正确恢复。可以使用RabbitMQ管理界面或rabbitmqctl命令行工具来检查队列、交换器和绑定等是否与备份前一致。

  • 恢复策略:在生产环境中,建议制定详细的恢复策略和流程。这包括恢复操作的步骤、责任人、通讯机制和应急响应计划,以确保在数据丢失或损坏时能够快速恢复服务。

9. 最后

感谢大家,请大家多多支持!

相关推荐
小夏卷编程8 小时前
Ubuntu 20.04.4 宝塔 docker showdoc v3.2 更新到v3.7.3
运维·docker·容器
JEECG低代码平台8 小时前
JeecgBoot低代码平台 Docker 部署 OnlyOffice 文档服务完整指南
低代码·docker·容器
生活爱好者!9 小时前
NAS帮我找回童年的快乐!部署 小游戏
运维·服务器·docker·容器·娱乐
自在极意功。10 小时前
nginx和docker面试题
运维·nginx·docker
不做超级小白11 小时前
执行docker命令时自动启动Docker Desktop?一个小工具让开发体验更丝滑
windows·docker
222you11 小时前
Ubuntu当中的Docker安装和镜像管理
ubuntu·spring cloud·docker
心易行者12 小时前
别再说“在我的机器上能跑”了!Docker 入门指南,专治各种环境不服
运维·人工智能·docker·容器
zhim0012 小时前
【保姆级教程】使用 Docker 部署 PostgreSQL + pgvector(含踩坑指南)
linux·docker
进击切图仔13 小时前
ROS 跨机通信与 Docker 多机环境搭建
运维·docker·容器
切糕师学AI14 小时前
Kubernetes 中的 Informer 机制
云原生·容器·kubernetes·informer