dockerHub地址:
https://hub.docker.com/_/eclipse-mosquitto
mosquitto开源地址:
https://github.com/eclipse/mosquitto

拉取镜像

  1. docker pull eclipse-mosquitto

准备好挂载目录

  1. mkdir -p /docker/mnt/mosquitto/config
  2. mkdir -p /docker/mnt/mosquitto/data
  3. mkdir -p /docker/mnt/mosquitto/log

初始化配置文件

  1. vi /docker/mnt/mosquitto/config/mosquitto.conf

内容如下:

  1. persistence true
  2. persistence_location /mosquitto/data
  3. log_dest file /mosquitto/log/mosquitto.log
  4. listener 2001

注意:

  • persistence_location, log_dest 目录为docker镜像中的目录无需做修改
  • listener 2001 默认的端口是1883,但是1883端口在某些操作系统会发生错误,选用一个2000以上的端口

    为目录授权

    1. chmod -R 755 /docker/mnt/mosquitto
    2. chmod -R 777 /docker/mnt/mosquitto/log

    日志目录要最大权限

    建立启动脚本

    vim mosquitto.sh
    内容如下:

    1. docker run -it --name=mosquitto --privileged
    2. -p 2001:2001
    3. -p 9001:9001
    4. -v /docker/mnt/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf
    5. -v /docker/mnt/mosquitto/data:/mosquitto/data
    6. -v /docker/mnt/mosquitto/log:/mosquitto/log
    7. -d eclipse-mosquitto

    注意:

  • 2001为mosquitto.conf指定的端口,也是mqtt的连接端口

  • 9001是对websocket支持的端口,如果不需要可去除
  • 如果提示【Error: Unable to open log file /mosquitto/log/mosquitto.log for writing.】
    则删了已有的日志文件重新建一个并授权再启动即可。

    ./mosquitto.sh 运行

    配置权限

    vim /docker/mnt/mosquitto/config/mosquitto.conf
    添加以下配置

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

    进入容器
    docker exec -it 6de87a71edc5 sh
    生成密码
    touch /mosquitto/config/pwfile.conf
    chmod -R 755 /mosquitto/config/pwfile.conf
    使用mosquitto_passwd命令创建用户,第一个test是用户名,第二个test2020是密码
    mosquitto_passwd -b /mosquitto/config/pwfile.conf test test2020
    重启mqtt服务
    docker restart 6de87a71edc5