Docker下使用EMQX开源版本搭建自己的MQTT服务
安装之前先做一下前置工作:
1.在centos中添加用户emqx及用户组emqx,因为emqx在docker容器中用户是emqx。
新增用户组 groupadd emqx 新增用户,分配用户组 useradd -g emqx -m emqx 查询用户 cut -d : -f 1 /etc/passwd 查询用户组 cut -d : -f 1 /etc/group
2.启动没有挂在宿主机目录的EQMX服务,启动成功后访问http://服务器Ip:18083 即可打开后台,默认账户名 admin 密码public
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx
3.复制已启动成功的EMQX容器中存储数据、日志相关的目录及其文件到宿主机制定挂在目录
分别复制以下三个目录 /opt/emqx/data /opt/emqx/etc /opt/emqx/log 执行命令: docker 容器名称:目录 宿主机目录 注意:容器目录和宿主目录中间有一个空格. 示例: docker cp k8s_emqx_emqx-79b8ccdcc5-n28b2_tongchuan_003b9b1f-3c38-11eb-866c-5254003ed89b_0:/opt/emqx/data /docker_volume/emqx/data
4.修改宿主机目录的所属用户和所属用户组为emqx
chown -R emqx:emqx /docker_volume/emqx/
注意:此处的/docker_volume/emqx/ 为苏主机目录,-R是将emqx及其所有子目录、文件的所属用户、用户组都修改。
做完以上前置步骤之后就记得将之前为了复制数据目录而且启动的容器停止删除掉。下来就可以正式启动EMQX,分为以下两种方式:
Docker启动方式:
docker run -d --name emqx -e EMQX_HOST="127.0.0.1" -e EMQX_NAME="demo_emqx" -v /docker_volume/emqx/data:/opt/emqx/data -v /docker_volume/emqx/etc:/opt/emqx/etc -v /docker_volume/emqx/log:/opt/emqx/log -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx 注意: EMQX_HOST 是本机IP,就填写127.0.0.1即可。EMQX_NAME是EMQX存储数据的唯一目录名称。 在docke启动的remqx运行产生的数据存储在 data/mnesia/$node_name 目录下,$node_name 是容器当前的 host_name 和 ip,用 docker 部署的时候每次都会变动的, 为了保证容器重启之后配置的数据还在,需要配置这两个环境变量。
Rancher启动方式: