zoukankan      html  css  js  c++  java
  • (1)RabbitMQ在Docker上安装

    1.简介

    在来学习RabbitMQ时候,我觉得很有必要先把它的环境先搭建起来,这样后面的示例才能进行。因为之前自己手动在Linux服务器上搭建过Elasticsearch,当时踩过太多坑了,浪费太多时间在这事情上,后面发现在Docker上安装部署方便快捷,不需要额外安装Erlang,所以写该篇文章先来介绍如何在Docker上部署RabbitMQ。

    2. 安装Docker Engine-Community

    使用Docker仓库进行安装,在新主机上首次安装Docker Engine-Community之前,需要设置Docker仓库。之后,您可以从仓库安装和更新Docker。

    2.1设置仓库

    安装所需的软件包。yum-utils提供了yum-config-manager,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。

    sudo yum install -y yum-utils 
                    device-mapper-persistent-data 
                    lvm2

    or

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2


    使用以下命令来设置稳定的仓库(一般不建议使用官方源地址,因为访问国外的站点比较慢,最好访问国内的源地址,例如阿里云):

    $ sudo yum-config-manager 
          --add-repo 
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    or

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    2.2安装Docker Engine-Community

    安装最新版本的Docker Engine-Community和containerd,或者转到下一步安装特定版本:

    sudo yum install docker-ce docker-ce-cli containerd.io

    2.3查看Docker版本

    docker version


    查看Docker版本时候,发觉Docker并没有启动,所以接下来要启动Docker。

    2.4启动Docker

    systemctl start docker

    2.5通过运行hello-world映像来验证是否正确安装了Docker Engine-Community(当运行容器时,使用的镜像如果在本地中不存在,就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源下载)

    docker run hello-world

    2.6查看镜像

    docker images


    由此可见,docker下载安装成功!

    3. Docker安装RabbitMQ

    可以自行进入docker hub镜像仓库地址(https://hub.docker.com)查看rabbitmq类型的镜像。

    3.1拉取rabbitmq镜像

    docker pull rabbitmq

     

    3.2查看镜像

    拉取rabbitmq镜像成功!

    3.3启动RabbitMQ Web界面

    docker restart rabbitmq(REPOSITORY,容器名称)
    docker restart 76615d52df27(CONTAINER ID,容器ID)

    设置rabbitmq用户名和密码并启动主要有两种方式:
    ●默认guest 用户,密码guest:

    docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

    ●设置新用户名和密码:

    docker run -d --hostname my-rabbit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=qwer1234 -p 15672:15672 -p 5672:5672 rabbitmq:management

    -d:后台运行容器。
    --name:指定容器名。
    -p:指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号)。
    -v:映射目录或文件。
    --hostname:主机名(RabbitMQ的一个重要注意事项是它根据所谓的“节点名称”存储数据,默认为主机名)。
    -e:指定环境变量(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)。

    ●启动rabbitmq_management脚本命令如下:

    docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management


     注意:rabbitmq为镜像名称。

    3.4开启防火墙15672端口

    firewall-cmd --zone=public --add-port=15672/tcp --permanent
    firewall-cmd --reload
    --查看是否开通访问权限
    firewall-cmd --permanent --zone=public --query-port=15672/tcp

    注:如果是阿里云等服务器,则需要配置RabbitMQ安全组策略
    登录阿里云->安全组规则->访问规则->入方向->手动添加如下策略:

    3.5查看正在运行容器

    docker ps -a

    3.6 rabbitmqctl用户命令使用

    当你使用rabbitmqctl用户命令时有如下提示:

    rabbitmqctl: command not found

    则是因为rabbitmqctl没有进行软连接,需要进入到rabbitmqctl的sbin目录下执行rabbitmqctl命令才有用。假设我要修改admin用户密码,需要找到rabbitmqctl的sbin目录并切换才能执行命令,如果不清楚目录在哪里,可以通过find命令查找:

    find / -name "rabbitmqctl*"

    3.6.1用户相关命令

    ●查看用户列表

    rabbitmqctl list_users

    ●增加用户

    rabbitmqctl add_user username 'password'

    ●设置角色

    rabbitmqctl set_user_tags username administrator

    ●修改用户密码

    rabbitmqctl change_password username 'newpasswd'

    ●删除用户

    rabbitmqctl delete_user username

    ●用户赋权(使用户user1具有vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源)

    rabbitmqctl set_permissions -p vhost1 username '.*' '.*' '.*'

    ●查看权限

    rabbitmqctl list_user_permissions username

    ●查看vhost1中权限

    rabbitmqctl list_permissions -p vhost1

    ●清除权限

    rabbitmqctl clear_permissions [-p VHostPath] username

    3.6 Docker重启RabbitMQ
    ●查看正在运行容器:

    docker ps -a

    ●停止运行rabbitmq容器:

    docker stop 9f1fb347efc2 (CONTAINER ID)

    ●删除rabbitmq容器:

    docker rm 9f1fb347efc2(CONTAINER ID)

    ●再执行3.3小节rabbitmq启动命令

    3.7安装成功



    参考文献:
    CentOS Docker安装
    Docker镜像使用
    Docker容器使用
    Docker容器连接

  • 相关阅读:
    MySQL for Linux错误: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    Git SSH Key 生成步骤
    百度陆奇最新内部演讲:如何成为一个优秀的工程师?
    Apple使用Apache Mesos重建Siri后端服务
    剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
    ElasticSearch VS Solr
    聊聊基于Lucene的搜索引擎核心技术实践
    如何安全的存储用户密码?
    MySQL 性能管理及架构设计指南
    大牛是怎么思考设计MySQL优化方案
  • 原文地址:https://www.cnblogs.com/wzk153/p/15239361.html
Copyright © 2011-2022 走看看