1,MQTT 介绍

MQTT 是一个基于客户端 - 服务器的消息发布 / 订阅传输协议。MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛:

2,Mosquitto 介绍

Mosquitto 是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布 / 可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。

3,安装步骤

(1)首先执行如下命令将镜像下载到本地:

1

docker pull eclipse-mosquitto

(2)接着执行如下命令创建目录:

1

2

3

mkdir -p /mosquitto/config

mkdir -p /mosquitto/data

mkdir -p /mosquitto/log

(3)然后执行如下命令创建初始化配置文件:

1

vi /mosquitto/config/mosquitto.conf

(4)在配置文件中添加如下内容,然后保存退出。

1

2

3

persistence true

persistence_location /mosquitto/data

log_dest file /mosquitto/log/mosquitto.log

(5)接着执行如下命令为目录授权(其中日志目录要最大权限):

1

2

chmod -R 755 /mosquitto

chmod -R 777 /mosquitto/log

(6)最后执行如下命令即可启动 mosquitto 容器:

1

2

3

4

5

6

docker run -d --name=mosquitto --privileged \

-p 1883:1883 -p 9001:9001 \

-v /mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf \

-v /mosquitto/data:/mosquitto/data \

-v /mosquitto/log:/mosquitto/log \

eclipse-mosquitto

1

2

3

4

5

6

docker run -d --name=mosquitto --privileged \

-p 1883:1883 -p 9001:9001 \

-v /mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf \

-v /mosquitto/data:/mosquitto/data \

-v /mosquitto/log:/mosquitto/log \

eclipse-mosquitto:1.6.14

4,连接测试

附:配置权限

(1)有时为了安全我们希望连接 mosquitto 服务时需要用户名密码,首先修改配置文件(/mosquitto/config/mosquitto.conf),添加以下配置:

1

2

3

4

# 关闭匿名模式

allow_anonymous false

# 指定密码文件

password_file /mosquitto/config/pwfile.conf

(2)接着执行如下命令进入容器:

1

docker exec -it mosquitto sh

(3)执行如下命令建立 pwfile.conf 文件,并设置权限:

1

2

touch /mosquitto/config/pwfile.conf

chmod -R 755 /mosquitto/config/pwfile.conf

(4)然后使用 mosquitto_passwd 命令创建用户(比如下面我们创建了一个名为 hangge 的用户,密码为 123),添加完毕后执行 exit 退出容器。

1

mosquitto_passwd -b /mosquitto/config/pwfile.conf hangge 123

(5)最后执行如下命令启动容器,这样就为 mosquitto 服务增加了权限验证功能,需要使用我们前面创建的用户密码才能连接。

转载请注明出处