一、查看官方的rabbitmq 镜像
docker search rabbitmq
选取第一个官方镜像
二、下载镜像
docker pull docker.io/rabbitmq
完了,使用后发现是 Debian 的系统,不是centos7 的系统,所以改用下面的方式,用 centos7 下安装 rabbitmq ,然后打包的方式
三、查看本地的镜像
docker images
发现里面有centos 镜像了,直接用;如果没有,可以用官方的centos 镜像
四、建立Docker容器(container),以 shell 方式进入
docker run -it --name dev-rabbitmq docker.io/centos:centos7.3.1611 /bin/bash
dev-rabbitmq 为别名,docker.io/centos 为镜像名,centos7.3.1611 为tag(如果不加tag,本地会重新下面latest 的 docker.io/centos,所以必须要加tag)
五、yum方式安装gcc相关、wget
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
yum -y install wget
六、安装 erlang
# 下载 erlang 源码包
cd /home
wget http://erlang.org/download/otp_src_20.3.tar.gz
# 解压
tar xvf otp_src_20.3.tar.gz
# 编译安装 erlang
cd otp_src_20.3
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll -enable-hipe
make && make install
修改配置
# vi 打开配置文件
vi /etc/profile
# 在profile中添加以下配置项
ERLANG_HOME=/usr/local/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH
# 加载配置使改动生效
source /etc/profile
6. 安装 rabbitmq
# 下载 rabbitmq源码包
cd /home
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-generic-unix-3.6.15.tar.xz
# 解压
tar -xvf rabbitmq-server-generic-unix-3.6.15.tar.xz
# 拷贝解压文件目录到 /usr/local 中
cp -rf ./rabbitmq_server-3.6.15 /usr/local/
# 修改 rabbitmq 的文件夹名称
cd /usr/local/
mv rabbitmq_server-3.6.15 rabbitmq-3.6.15
# 打开 rabbitmq_management
cd ./rabbitmq-3.6.15/sbin/
./rabbitmq-plugins enable rabbitmq_management
# 修改配置 rabbitmq-server
vi ./rabbitmq-server
# 在文件头部增加以下配置
ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH
# 修改配置 rabbitmqctl
vi ./rabbitmqctl
# 在文件头部增加以下配置
ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH
七. rabbitmq 相关操作
# 启动 rabbitmq-server
./rabbitmq-server
./rabbitmq-server -detached
# 停止 rabbitmq
./rabbitmqctl stop
# 增加用户 admin
cd /usr/local/rabbitmq-3.6.15/sbin
# 添加用户名:admin 密码:admin
./rabbitmqctl add_user admin admin
# 设置角色为 管理员
./rabbitmqctl set_user_tags admin administrator
# 设置权限
./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#新建host
./rabbitmqctl add_vhost "dmd"
./rabbitmqctl set_permissions -p "dmd" admin ".*" ".*" ".*"
八、配置远程访问
#修改配置文件
sudo vi /etc/rabbitmq/rabbitmq.config
#保存以下内容
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["admin"]}]}
].
发现没有 /etc/rabbitmq/rabbitmq.config 这个文件,运行 ./rabbitmq-server status ,查看日志文件在
/usr/local/rabbitmq-3.6.15/var/log/rabbitmq/rabbit@2895ffd6be24.log ,查看此文件,发现
配置文件在 : config file(s) : /usr/local/rabbitmq-3.6.15/etc/rabbitmq/rabbitmq.config (not found)
显示没有找到,所以去新建这个文件
vi /usr/local/rabbitmq-3.6.15/etc/rabbitmq/rabbitmq.config
#保存以下内容
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["admin"]}]}
].
九、Docker 制作镜像文件
docker commit dev-rabbitmq centos7/rabbitmq-3615
十、使用制作好的镜像文件生成 Docker 容器,容器启动 rabbitmq
docker run -tid --name docker-rabbitmq -p 5672:5672 -p 15672:15672 centos7/rabbitmq-3615 /usr/local/rabbitmq-3.6.15/sbin/rabbitmq-server
即可,访问 ip:15672
重点来了:
看过很多文档,到这里就结束了,事实上在 界面里面创建的一些信息,例如登录用户的信息等等 在重启后会消失,经排查
发现下面启动方式不行,虽然能启动,但是一是目录没有挂载
docker run -tid --name dev-rabbitmq -p 5672:5672 -p 15672:15672 centos7/rabbitmq-3615 /usr/local/rabbitmq-3.6.15/sbin/rabbitmq-server
更关键的是,会由于每次启动docker images ,会生成新的容器的主机名,但是之前创建的数据是保存在之前对应主机名的 mnesia 目录下的,如
/usr/local/rabbitmq-3.6.15/var/lib/rabbitmq/mnesia/rabbit@7094af771171
所以 加入两点,一、挂载目录到宿主机,二、加入-h hostname 名称,固定主机名
一定要挂载目录到宿主机 /mnt/data/rabbitmq-data/rabbitmq-3.6.15 为宿主机的目录
docker run -tid --name dev-rabbitmq -h rabbitmqhost -p 5672:5672 -p 15672:15672 -v /mnt/data/rabbitmq-data/rabbitmq-3.6.15:/usr/local/rabbitmq-3.6.15 centos7/rabbitmq-3615 /usr/local/rabbitmq-3.6.15/sbin/rabbitmq-server
再次启动,完美解决rabbitmq 重启后,之前创建数据消失的问题