1.启动rabbitmq
(1)查看镜像:docker images
拓展:
查看运行的容器:docker ps
查看详细的容器信息:docker ps -a
删除镜像:docker rmi 镜像名称
查找某一个镜像:docker serach nginx(镜像名称)
查询所有运行过的容器id:docker ps -a -q
启动以运行过的容器:docker start 容器名称/容器id
启动所有运行过的容器:docker start `docker ps -a -q`
停止所有运行过的容器:docker stop `docker ps -a -q`
杀掉容器:docker kill 容器名称/容器id
注意:部分工具复制粘贴,某一些命令看似无变化,实则运行会报错,最好手动重新输入。
(2)启动rabbitmq:docker run --name rabbitmq -p 15000:15672 rabbitmq:latest
--name rabbitmq:容器名称
-p 15000:15672:端口映射,将本地的15000端口映射到容器内部的15672端口
rabbitmq:latest 镜像名称及标签
(3)删除容器:docker rm 容器名称
(4)后台方式启动rabbitmq:docker run -d --name rabbitmq -p 15000:15672 rabbitmq:latest
-d:以后台方式运行容器
(5)停止容器:docker stop 容器id
(6)若出现容器名称冲突,删除容器名称,重新启动,或者重新命名。
(7)后台方式启动rabbitmq并设置用户名和密码:docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 rabbitmq:latest
-e RABBITMQ_DEFAULT_USER=root 设置用户名
-e RABBITMQ_DEFAULT_PASS=123456设置密码
(8)进入容器rabbitmq:sudo docker exec -it 96a93d53e2e0 /bin/bash
(9)开启rabbitmq服务插件:rabbitmq-plugins enable rabbitmq_management
(10)浏览器输入:http://192.168.229.130:15672/#/,输入用户名和密码。
注意:若输入地址无法访问该网站,需要进入容器开启rabbitmq插件,步骤按照(8)和(9)操作即可。
2.rabbitmq使用
(1)rabbitmq简单介绍
(2)cmd下找到python安装目录,安装pika,pip install pika
(3)编写python发送和接收的脚本
#!usr/bin/env
import pika
class send():
def _init_(self):
self._impl = self._create_connection(host='http://192.168.229.130:15672/#/')
def _create_connection(self):
#建立到rabbitmq服务器的链接
connection=pika.BlockingConnection(pika.ConnectionParameters(self._impl))
channel=connection.channel()
#声明一个队列,命名为name
channel.queue_declare(queue='name')
#exchange为空字符串标示默认交换机,指定队列名字,以及设置参数
channel.basic_publish(exchange='',routing_key='name',body='this is a queue!')
print("[x] Sent 'this is a queue!'")
#raise self._reap_last_connection_workflow_error(error='falid')
#for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
# socket.gaierror
def _resolve(self):
#关闭链接
self.connection.close()
if __name__ == '__main__':
send()
#!/usr/bin/env
import pika
class recevice():
def _init_(self):
self._impl = self._create_connection(host='http://192.168.229.130:15672/#/')
def _create_connection(self):
#建立到rabbitmq服务器的链接
connection=pika.BlockingConnection(pika.ConnectionParameters(self._impl))
channel=connection.channel()
#声明一个队列,命名为name
channel.queue_declare(queue='name')
#回调函数,将信息输出到屏幕上
def callback(ch, method, properties, body,self):
print(" [x] Received %r" % body)
#回调函数将从队列name中取出消息
self.channel.basic_consume(self.callback,queue='name',no_ack=True)
#raise self._reap_last_connection_workflow_error(error='falid')
#for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
# socket.gaierror
def _resolve(self):
#等待消息
print(' [*] Waiting for messages. To exit press CTRL+C')
self.channel.start_consuming()
if __name__ == '__main__':
recevice()
import json
import pika
import datetime
class message():
# def _init_(self):
#self._impl=self._create_connection(host='http://192.168.229.130:15672/#/')
#raise self._reap_last_connection_workflow_error()
#消费处、接收消息处
def get_message(self):
#生成5条消息
for i in range(5):
message=json.dumps({'id':"10000%s"%i,'amount':100*i,'name':"jams",'createtime':str(datetime.datetime.now())})
self.producter(message)
#生产处、消息生产者
def producter(message):
#与rabbitmq服务建立连接
connection=pika.BlockingConnection(pika.ConnectionParameters(host='192.168.229.130',port=15672,credentials=pika.PlainCredentials('root','123456')))
#创建一个AMQP信道
channel=connection.channel()
#声明一个队列,名称叫name,若不存在将创建
channel.queue_declare(queue='name')
#向队列中插入数值,routing_key的队列名为name,body是放入的消息内容
#exchange指定消息在哪个队列传递,默认exchange为空字符串,能发送消息到队列中
channel.basic_publish(exchange='',routing_key='name',body=message)
#关闭连接
connection.close()
if __name__ == '__main__':
#程序执行的入口
message()
(4)容器中查找rabbitmq配置文件
进入容器:sudo docker exec -it 96a93d53e2e0 /bin/bash
查找进程:ps -ef|grep rabbitmq*
切换到配置文件目录:cd /opt/rabbitmq/sbin/
打开配置文件:more rabbitmq-defaults
(5)页面查看容器详情
overview-Name-进入可查看具体信息