菜单
本页目录

docker安装mosquitto

1.获取mqtt镜像

docker pull eclipse-mosquitto

2.启动mqtt

docker run -it --name=mosquitto -p 1883:1883 -d eclipse-mosquitto

3更改账号密码:

  1. 进入容器中
    docker exec -it mosquitto sh
    
  2. 进入 cd /mosquitto/config,打开配置文件 vi mosquitto.conf
  3. 增加 listener 1883,这个不添加,只有本机才能够访问,其它地址访问不了。设置 allow_anonymous false ,这个配置文件中有,打开注释即可,含义为不允许匿名登录。可以 / allow_anonymous false 进行搜索,按n键搜索下一条。搜索 password_file,打开注释,在 password_file后面加上 /mosquitto/config/pwdfile.conf,保存退出,写绝对地址,不要写相对地址,这个设置的是存放密码的文件的位置。
  4. 退出到 mosquitto.conf 所在位置,建立一个文件 touch pwdfile.conf,写入账号密码:mosquitto_passwd -b pwdfile.conf admin public (admin 是账号,public 是密码)
  5. 退出容器,重启服务。docker restart mosquitto

注意

这个是在mosquitto 2.xx版本中的操作,如果不配置密码,客户端会显示无权限连接

docker-compose安装mosquitto

version: "3.7" 
services:
  mqtt:
    image: eclipse-mosquitto:latest 
    container_name: mosquitto
    privileged: true 
    ports: 
      - "1883:1883"
      - "19001:9001"
    volumes:
      - /mnt/docker/mosquitto/config:/mosquitto/config
      - /mnt/docker/mosquitto/data:/mosquitto/data
      - /mnt/docker/mosquitto/log:/mosquitto/log
    restart: on-failure

docker-compose文件中定义的 conf目录中放入 mosquitto.conf文件

persistence true
# 定义监听端口,如果不定义则只能本地访问
listener 1883
# 定义数据存放目录
persistence_location /mosquitto/data
# 定义日志存放路径
log_dest file /mosquitto/log/mosquitto.log
# 匿名模式  false开启,true关闭
# allow_anonymous false
# 指定密码文件
# password_file /mosquitto/config/pwfile.conf

使用 docker-compose启动

docker-compose -f docker-compose-mqtt.yml up -d

此时连接时没有密码的,密码配置:

  1. 修改配置文件
    # 关闭匿名模式
    allow_anonymous true
    
  2. 指定密码文件
    1. 进入docker内部生成密码,进入容器内部 docker exec -it mqtt sh
    2. 生成文件 创建密码
      touch /mosquitto/config/pwfile.conf
      chmod -R 755 /mosquitto/config/pwfile.conf
      
  3. 使用mosquitto_passwd命令创建用户 admin是用户名,admin_123是密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf admin admin_123
  1. 退出容器,重启容器