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容器连接

(1)RabbitMQ在Docker上安装的更多相关文章

  1. CI与CD之Docker上安装Jenkins

    一.CI,CD,Jenkins的介绍 CI:持续集成(Continuous integration,简称 CI),在传统的软件开发环境中,有集成,但是没有持续集成这种说法,长时间的分支与主干脱离,导致 ...

  2. Docker上安装Redis

    Docker可以很方便的进行服务部署和管理,下面我们通过docker来搭建Redis的单机模式.Redis主从复制.Redis哨兵模式.Redis-Cluster模式 一.在Docker上安装单机版R ...

  3. docker上安装elasticsearch和ik分词器插件和header,实现分词功能

    docker run -di --name=tensquare_es -p 9200: -p 9300:9300 elasticsearch:5.6.8 创建elasticsearch容器(如果版本不 ...

  4. docker上安装nginx服务

    环境     1.开启一个容器,安装nginx,略过   2.假如第一步新启动没映射端口的话,重新把容器保存为镜像然后再重新运行一个新容器,不建议在一个正在运行的容器上做端口映射 docker run ...

  5. 在Docker上安装配置Oracle教程

    地址:https://github.com/wnameless/docker-oracle-xe-11g Docker shell 下: docker pull wnameless/oracle-xe ...

  6. docker上安装eslaticsearch

    一 elasticsearch安装 1 查找镜像: docker search elasticsearch 可以看到如下截图; 2 拉取镜像 docker pull elasticsearch 我并没 ...

  7. 在腾讯CentOS7.4云服务器上安装Docker,在Docker上安装配置MySQL、Tomcat和Nginx

    提示:以下是在腾讯CentOS7.4云服务器上操作. Docker的基本操作:https://www.cnblogs.com/opsprobe/p/10963098.html 一.安装Docker # ...

  8. rabbitmq在mac上安装

    1.安装brew 打开http://bash.sh  执行 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/ ...

  9. 在单机Docker上安装 Traefik 反向代理-负载均衡器

    一.创建Traefik和容器应用的连接网络 sudo docker network create traefik-net 二.下载Traefik样本配置文件wget https://raw.githu ...

随机推荐

  1. 基于MD5+RSA算法实现接口调用防扯皮级鉴权

    概述 最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标. 数字签名采用MD5+RSA算法实现.RSA私钥要严格保密并提供安 ...

  2. Java 中节省 90% 时间的常用的工具类

    前言 你们有木有喜欢看代码的领导啊,我的领导就喜欢看我写的代码,有事没事就喜欢跟我探讨怎么写才最好,哈哈哈...挺好. 今天我们就一起来看看可以节省 90% 的加班时间的第三方开源库吧,第一个介绍的必 ...

  3. 王者并发课-钻石2:分而治之-如何从原理深入理解ForkJoinPool的快与慢

    欢迎来到<王者并发课>,本文是该系列文章中的第25篇,砖石中的第2篇. 在上一篇文章中,我们学习了线程池ThreadPoolExecutor,它通过对任务队列和线程的有效管理实现了对并发任 ...

  4. 浅谈Blazor开发的那些事

    在这篇文章中,我们将解决一些常见的Blazor问题.具体来说就是"什么是Blazor",但更重要的是"为什么要用Blazor".既然我们已经有了Angular. ...

  5. OpenGL学习笔记(四)纹理

    目录 要完成的纹理效果 纹理环绕方式 纹理过滤 多级渐远纹理 加载与创建纹理 stb_image库的使用方法 生成纹理对象 应用纹理 纹理单元 参考资料:OpenGL中文翻译 要完成的纹理效果 纹理是 ...

  6. C++ //this 指针的使用 //1 解决名称冲突 //2 返回对象本身 用 *this

    1 //this 指针的使用 2 //1 解决名称冲突 3 //2 返回对象本身 用 *this 4 5 #include <iostream> 6 #include <string ...

  7. 大龄程序员的出路在哪里?八年老Android的一点心得

    这篇文章,给大家聊聊Android工程师的职业发展规划的一些思考,同时也给不少20多岁.30多岁,但是对自己的职业未来很迷茫的同学一些建议. 笔者希望通过此文,帮大家梳理一下程序员的职业发展方向,让大 ...

  8. CentOS的crond系统定时服务

    crond 服务管理 [root@node01 ~]# service crond start           (启动服务) [root@node01 ~]# service crond stop ...

  9. MySQL-06-DQL语句

    DQL sql文件下载链接: https://alnk-blog-pictures.oss-cn-shenzhen.aliyuncs.com/blog-pictures/world.sql selec ...

  10. Java 横向技术 Spring框架【笔记】

    Java横向技术 spring框架[笔记] Spring 的两大特性是什么? AOP(Aspect Oriented Programming,面向切面编程)与 IOC(Inverse of Contr ...