Bootstrap

docker容器中安装rabbit的步骤与实践

## 在Docker中安装RabbitMQ

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

### 前提条件

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

### 步骤1:拉取RabbitMQ镜像

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

在终端中运行以下命令:

```bash

docker pull rabbitmq:management


```

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

### 步骤2:运行RabbitMQ容器

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

```bash

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容器内执行以下命令:

   ```bash

   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

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

   进入容器并编辑`rabbitmq.conf`:

   ```bash

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


   ```

   然后,重新启动RabbitMQ服务:User can only log in via localhost

   ```bash

   rabbitmqctl stop
   rabbitmqctl start


   ```

### 步骤5:测试连接

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

1. 安装`pika`:

   ```bash

   pip install pika


   ```

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

   ```python
   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. 编写一个消费者脚本来接收消息:

   ```python
   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容器:

   ```bash
   docker stop rabbitmq
   ```

2. 删除RabbitMQ容器:

   ```bash
   docker rm rabbitmq
   ```

### 总结

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

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

;