基于docker安装rabbit服务的过程与总结

123 阅读4分钟

RabbitMQ是一款流行的消息队列服务,它广泛应用于分布式系统中,用于异步通信。使用Docker安装RabbitMQ可以快速搭建和部署RabbitMQ服务,而无需在物理服务器上进行复杂的配置。本文将介绍如何在Docker中安装和配置RabbitMQ。 image.png

前提条件

  1. 已经安装了Docker。如果没有安装,可以参考Docker官方文档进行安装。
  2. 如果需要Web管理界面,还需要安装RabbitMQ的管理插件。

步骤1:拉取RabbitMQ镜像

RabbitMQ有一个官方的Docker镜像,其中包含了管理插件。首先,我们需要从Docker Hub拉取这个镜像。

在终端中运行以下命令:

docker pull rabbitmq:management

这里使用的是rabbitmq:management镜像,它包括了RabbitMQ服务器和Web管理插件。通过Web管理界面,你可以更加方便地监控和管理RabbitMQ服务。

步骤2:运行RabbitMQ容器

拉取镜像后,你可以通过以下命令启动一个新的RabbitMQ容器:

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management

这里的参数解释如下:

  • -d:以后台模式运行容器。
  • --name rabbitmq:指定容器的名称为rabbitmq
  • -p 5672:5672:将容器的5672端口(RabbitMQ的默认端口)映射到主机的5672端口。
  • -p 15672:15672:将容器的15672端口(RabbitMQ管理界面的端口)映射到主机的15672端口。
  • rabbitmq:management:指定使用rabbitmq:management镜像。

运行此命令后,RabbitMQ容器将启动并在后台运行。

步骤3:访问RabbitMQ管理界面

RabbitMQ镜像包括了一个Web管理界面,默认情况下,您可以通过浏览器访问管理界面。

打开浏览器,访问:

http://localhost:15672

在登录页面中,默认的用户名和密码是:

  • 用户名:guest
  • 密码:guest

登录后,你将能够管理RabbitMQ,包括查看队列、交换机、绑定以及其他配置。

步骤4:配置RabbitMQ

RabbitMQ安装成功后,你可能需要进行一些额外的配置,例如:

  1. 创建新的用户和权限: 默认的guest用户只能通过localhost访问。如果你希望从远程访问RabbitMQ,可以创建新的用户,并赋予适当的权限。

    在Docker容器内执行以下命令:

    docker exec -it rabbitmq bash
    rabbitmqctl add_user new_user new_password
    rabbitmqctl set_permissions -p / new_user ".*" ".*" ".*"
    rabbitmqctl set_user_tags new_user administrator
    

image.png 2. 配置允许远程访问: 默认情况下,RabbitMQ的guest用户只能从localhost登录。如果你希望允许guest用户从其他地方登录,修改配置文件是必要的。

进入容器并编辑rabbitmq.conf

docker exec -it rabbitmq bash
echo "loopback_users.guest = false" >> /etc/rabbitmq/rabbitmq.conf

然后,重新启动RabbitMQ服务:

rabbitmqctl stop
rabbitmqctl start

步骤5:测试连接

你可以使用任何RabbitMQ客户端来连接到RabbitMQ服务,例如通过amqp协议来发送和接收消息。以Python为例,可以使用pika库来连接到RabbitMQ:

  1. 安装pika

    pip install pika
    
  2. 编写一个简单的生产者脚本来发送消息:

    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()
    
    channel.queue_declare(queue='hello')
    
    channel.basic_publish(exchange='',
                          routing_key='hello',
                          body='Hello, RabbitMQ!')
    
    print(" [x] Sent 'Hello, RabbitMQ!'")
    connection.close()
    
  3. 编写一个消费者脚本来接收消息:

    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()
    
    channel.queue_declare(queue='hello')
    
    def callback(ch, method, properties, body):
        print(" [x] Received %r" % body)
    
    channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
    
    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()
    

运行这些脚本后,你将能够看到生产者发送的消息被消费者接收。

步骤6:停止和删除RabbitMQ容器

如果你完成了对RabbitMQ的使用,可以停止并删除容器:

  1. 停止RabbitMQ容器:

    docker stop rabbitmq
    
  2. 删除RabbitMQ容器:

    docker rm rabbitmq
    

总结

通过Docker安装RabbitMQ非常简单,可以帮助你快速部署消息队列服务。使用官方的rabbitmq:management镜像,你不仅可以运行RabbitMQ,还可以通过Web管理界面进行监控和配置。你还可以根据需要创建新用户、设置权限以及修改配置以满足特定的需求。

希望这篇教程能帮助你在Docker中成功安装并配置RabbitMQ!