Docker安装单点RabbitMQ
阅读原文时间:2022年05月11日阅读:1
  • Centos 7.5
  • docker环境

拉取镜像

$  docker pull rabbitmq:management

说明:

获取rabbiymq镜像的时候要记得获取management版本,不要获取last版本的,只有management版本才带有管理界面,方便进行可视化操作。

创建容器

$  docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management

或者

$ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management

说明:

第二个创建容器的命令中添加了rabbitmq的默认用户和默认用户的密码,如果不指定默认用户和密码,那么管理界面使用guest作为默认的用户名和密码。

访问管理界面

浏览器地址栏输入http://[宿主机ip]:15672即可访问管理页面,没有设置默认用户名密码的情况下,默认的用户名和密码都是guest

正常情况下,使用上述的安装步骤即可成功创建一个rabbitmq的容器,但是如果要在创建rabbitmq容器时自己指定配置文件,可以使用下面的命令。

  • 在宿主机上创建配置文件存储位置

    $ mkdir -p /home/rabbitmq/lib /home/rabbitmq/etc /home/rabbitmq/log

  • 复制已经创建的容器中的配置到宿主机

    $ docker cp -a rabbitmq:/var/lib/rabbitmq /home/rabbitmq/lib/

    $ docker cp -a rabbitmq:/etc/rabbitmq /home/rabbitmq/etc/

    $ docker cp -a rabbitmq:/var/log/rabbitmq /home/rabbitmq/log/

    $ useradd -s /sbin/nologin rabbitmq

  • 给宿主机上的文件赋予权限

    $ cd /home/

    $ chown -Rf rabbitmq:rabbitmq rabbitmq/

  • 停止已经启动的rabbitmq容器

    $ docker kill rabbitmq

  • 删除创建的rabbitmq容器

    $ docker rm -f rabbitmq

  • 重新创建rabbitmq容器

    $ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq -v /home/rabbitmq/etc/rabbitmq:/etc/rabbitmq -v /home/rabbitmq/lib/rabbitmq:/var/lib/rabbitmq -v /home/rabbitmq/log/rabbitmq/:/var/log/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management

    //添加用户名密码都是root的用户
    $ rabbitmqctl add_user root root

    //查看等待队列
    $ rabbitmqctl list_queues

    //停止节点
    $ rabbitmqctl stop_app

    //重置节点
    $ rabbitmqctl reset

    //启动节点
    $ rabbitmqctl start_app

    //查看集群状态
    $ rabbitmqctl cluster_status

    //更改节点为磁盘或内存节点
    $ rabbitmqctl change_cluster_node_type disc/ram

    //将"hello"的队列设置为同步给其它节点,即开启高可用模式
    $ rabbitmqctl set_policy ha-all "hello" '{"ha-mode":"all"}'

    //将节点从集群中移除
    $ rabbitmqctl forget_cluster_node rabbit@rabbit1