Docker安装部署mosquitto

Docker安装部署MQTT服务mosquitto

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
mosquitto一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。

docker安装mosquitto

mosquitto的docker安装部署mosquitto简单,但是很难保证正常运行。主要出现的问题就是权限问题。

1527070286: Error: Unable to open log file /var/log/mosquitto.log for writing. 

权限问题,即使按网上的解决问题将mosquitto目录文件设为755也解决不了。后来按照设置mosquitto容器中的user id和docker的执行id相同解决。

docker-compose部署mosquitto

#创建目录
mkdir -p /mosquitto/config
mkdir -p /mosquitto/data
mkdir -p /mosquitto/log
#初始化配置文件
vi /mosquitto/config/mosquitto.conf
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
#docker-compose.yml
  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    user: 1000:995 #uid=1002(docker) gid=1002(docker) groups=1002(docker)
    hostname: mosquitto
    restart: always
    ports:
      - 1883:1883
      - 9001:9001
    volumes:
      - ${USERDIR}/mosquitto:/mosquitto
      - ${USERDIR}/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf
      - ${USERDIR}/mosquitto/log:/mosquitto/log
      - ${USERDIR}/mosquitto/data:/mosquitto/data
#docker-compose部署容器
docker-compose -f ./docker-compose.yml up -d

mosquitto用户配置

1.配置文件添加以下配置

# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf

2.进入容器

docker exec -it mosquitto sh

3.生成密码

mosquitto_passwd -c /mosquitto/config/pwfile.conf admin

mosquitto测试

主机安装mosquitto_client,进行测试

sudo apt-get install mosquitto-clients
#订阅消息
mosquitto_sub -h host -t "test" -u admin -P password
#另一终端发布消息
mosquitto_pub -t "test" -m "Hello~~!!" -u admin -P password

订阅方可以收到Hello信息。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据