Docker 安装 eclipse-mosquitto_docker eclipse-mosquitto-程序员宅基地

技术标签: 消息队列  docker  

1、拉取 eclipse-mosquitto:2.0.14

[root@Tseng-HW ~]# docker pull eclipse-mosquitto:2.0.14
2.0.14: Pulling from library/eclipse-mosquitto
97518928ae5f: Already exists 
b491d2bad818: Pull complete 
1c67a7209b6c: Pull complete 
Digest: sha256:64b7c1729f7d1fff46b5e884fc389071686b2f7ed116c3fc7e17cbcb50fa147e
Status: Downloaded newer image for eclipse-mosquitto:2.0.14
docker.io/library/eclipse-mosquitto:2.0.14
[root@Tseng-HW ~]# docker images
REPOSITORY                                    TAG       IMAGE ID       CREATED         SIZE
eclipse-mosquitto                             2.0.14    457fe4154880   9 months ago    11.8MB
[root@Tseng-HW ~]# 

2、创建配置文件、数据文件、日志文件目录

[root@Tseng-HW ~]# mkdir -p /data/mosquitto/config
[root@Tseng-HW ~]# mkdir -p /data/mosquitto/data
[root@Tseng-HW ~]# mkdir -p /data/mosquitto/log
[root@Tseng-HW config]# cd /data/mosquitto/config/
-- 创建配置文件、创建密码文件
[root@Tseng-HW config]# vim mosquitto.conf
[root@Tseng-HW config]# vim userpass.conf
[root@Tseng-HW config]# ls
mosquitto.conf  userpass.conf

        mosquitto.conf 配置文件

listener 1883
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
password_file /mosquitto/config/userpass.conf
per_listener_settings false
allow_anonymous false
  1. listener 1883:

    这一行指示 Mosquitto 在端口 1883 上监听 MQTT 连接请求。这是 MQTT 协议的标准端口,客户端通常会连接到这个端口与 MQTT 代理交互。如果您没有特别指定端口,客户端默认也会尝试连接到这个端口。

  2. persistence true:

    此配置开启 Mosquitto 的持久化存储功能。当设置为 true 时,Mosquitto 会将未被客户端接收的消息保存到磁盘上。这样,即使 Mosquitto 服务重启,这些消息也不会丢失,而是会在服务恢复后继续发送给相应的订阅者。这对于确保消息可靠传输和防止消息丢失至关重要,特别是在处理重要通知、命令或状态更新等场景。

  3. persistence_location /mosquitto/data/:

    这一行定义了 Mosquitto 用于存储持久化消息的目录。此处指定的路径是 /mosquitto/data/,意味着 Mosquitto 会在容器内部(如果是 Docker 容器)或宿主机(如果是直接安装)的相应目录下创建和管理持久化数据文件。确保该目录存在且具有足够的权限供 Mosquitto 写入。

  4. log_dest file /mosquitto/log/mosquitto.log:

    这行配置指定了 Mosquitto 的日志输出目的地及文件路径。在这里,日志被定向到文件 /mosquitto/log/mosquitto.log。所有 Mosquitto 的运行日志、错误信息和其他诊断消息都将写入到这个文件中,便于管理员监控服务状态、排查问题或进行审计。
    
  5. password_file /mosquitto/config/userpass.conf:

    这个配置告诉 Mosquitto 使用指定的密码文件 /mosquitto/config/userpass.conf 进行用户身份验证。密码文件通常包含用户名和经过哈希处理的密码对,用于限制客户端访问。只有在密码文件中注册的用户才能成功连接到 Mosquitto,并根据其配置的权限进行发布或订阅操作。启用此配置可以增强 MQTT 服务的安全性,防止未经授权的访问。

  6. per_listener_settings false:

    此配置项指示 Mosquitto 是否为每个监听器(listener)单独应用特定的设置。当设置为 false 时,所有监听器共享相同的全局设置,如用户认证、ACL(访问控制列表)、持久化存储等。如果设置为 true,则可以为不同的监听器配置不同的认证方式、权限规则等。此处设为 false 表示所有监听器(如上面定义的 1883 端口)使用相同的认证、权限等设置。

  7. allow_anonymous false:

    这个配置禁止 Mosquitto 接受匿名(未经身份验证)的连接请求。当设置为 false 时,所有试图连接到 Mosquitto 的客户端必须提供有效的用户名和密码(通过 password_file 配置的文件进行验证),否则连接请求将被拒绝。可以防止未经授权的设备或客户端访问 MQTT 服务。

3、启动容器

[root@Tseng-HW mosquitto]# docker run -d --name eclipse-mosquitto -v /data/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /data/mosquitto/config/userpass.conf:/mosquitto/config/userpass.conf -v /data/mosquitto/data:/mosquitto/data -v /data/mosquitto/log:/mosquitto/log -p 20011:1883 eclipse-mosquitto:2.0.14
68ab8f107a90dfc4943258a45b550379474b769a2228ddab4a26547c605dbe85
[root@Tseng-HW mosquitto]# docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS         PORTS                                         NAMES
68ab8f107a90   eclipse-mosquitto:2.0.14   "/docker-entrypoint.…"   11 seconds ago   Up 9 seconds   0.0.0.0:20011->1883/tcp, :::20011->1883/tcp   eclipse-mosquitto
[root@Tseng-HW mosquitto]#

4、进入容器,设置密码(设置密码成功后,重启容器),注意密码长度,长度过长可能会失败

[root@Tseng-HW mosquitto]# docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                                         NAMES
68ab8f107a90   eclipse-mosquitto:2.0.14   "/docker-entrypoint.…"   13 minutes ago   Up 13 minutes   0.0.0.0:20011->1883/tcp, :::20011->1883/tcp   eclipse-mosquitto
[root@Tseng-HW mosquitto]# docker exec -it 68ab sh
/ # mosquitto_passwd -b mosquitto/config/userpass.conf tseng Tseng@2022
/ # exit
[root@Tseng-HW mosquitto]# cat /data/mosquitto/config/userpass.conf 
tseng:$7$101$LGsXChp3eUUNBiPx$D0ctHVj46/Qv0EcM1VOOUxCsxA1K3Gj27sppnndaOJYg21NUmUXK9M6a2OKe8sCHGodkZNC7nKliLp9esNrXyg==
[root@Tseng-HW mosquitto]# docker restart 68ab
68ab
[root@Tseng-HW mosquitto]# 

        添加新用户、删除用户,操作后重启容器

[root@Tseng-HW ~]# docker exec -it 68ab sh
/ # cat /mosquitto/config/userpass.conf 
tseng:$7$101$ZJyWnsIKF4k4v6xs$Jf3oKACgopIpjxSMnPDHlynMOa5h5F8AZjIsCO4Aly9QbVDedlzpYgqaMdOQBUSCtpP07neJyWTDjNKquQkhhg==
# 添加新用户
/ # mosquitto_passwd -b mosquitto/config/userpass.conf tseng1 tseng#2023
/ # mosquitto_passwd -b mosquitto/config/userpass.conf tseng2 tseng#2023
/ # cat /mosquitto/config/userpass.conf 
tseng:$7$101$ZJyWnsIKF4k4v6xs$Jf3oKACgopIpjxSMnPDHlynMOa5h5F8AZjIsCO4Aly9QbVDedlzpYgqaMdOQBUSCtpP07neJyWTDjNKquQkhhg==
tseng1:$7$101$WCEf4zBR7JkVZD9F$zCYCjnNJmqIs8Y47s7iSE/jldoFOt7ZwbEEotwdlCDvx4T7U/tmH83kOHrBMc3HFyXLhiGHMfIIk4tkduPo38Q==
tseng2:$7$101$4CqD7hUZSeZWx34/$+/QQNmt0mRwbFh7Dbd9eLDHMmPhqzs9Jd2P8uddOgjB9kb4TxvMKmXvKe7wNycXkJDiN4dh4gw5efI8Q+IZIUg==
## 删除用户
/ # mosquitto_passwd -D mosquitto/config/userpass.conf tseng2
/ # cat /mosquitto/config/userpass.conf 
tseng:$7$101$ZJyWnsIKF4k4v6xs$Jf3oKACgopIpjxSMnPDHlynMOa5h5F8AZjIsCO4Aly9QbVDedlzpYgqaMdOQBUSCtpP07neJyWTDjNKquQkhhg==
tseng1:$7$101$WCEf4zBR7JkVZD9F$zCYCjnNJmqIs8Y47s7iSE/jldoFOt7ZwbEEotwdlCDvx4T7U/tmH83kOHrBMc3HFyXLhiGHMfIIk4tkduPo38Q==
/ # 

5、测试(使用MQTTX测试)

       注意:开启MQTT的端口

    MQTTX下载地址:MQTT X:跨平台 MQTT 5.0 桌面客户端工具

 5.1 添加订阅

5.2 发送消息

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/piaomiao_/article/details/126628823

智能推荐

elastic-job任务能够正常执行,但是elastic-console显示任务下线_elasticjob 下线-程序员宅基地

文章浏览阅读2.8k次。elastic-job任务能够正常执行,但是elastic-console显示任务下线time>>Thu Apr 25 10:21:06 CST 2019 JobA>>>>>>>time>>Thu Apr 25 10:21:09 CST 2019 JobA>>>>>>>ti..._elasticjob 下线

读写ini文件 c#_imc.ini-程序员宅基地

文章浏览阅读177次。一、ini文件格式二、新建IniHelper类,用于读写Ini文件using System.Runtime.InteropServices;using System.Text;namespace INITest{ class IniHelper { private string sPath = ""; public IniHelp..._imc.ini

LeetCode每日一题(持续更新中~~~)-程序员宅基地

文章浏览阅读1k次。2432. 处理用时最长的那个任务的员工;1419. 数青蛙;1010. 总持续时间可被 60 整除的歌曲;2437. 有效时间的数目;1015. 可被 K 整除的最小整数;1016. 子串能表示从 1 到 N 数字的二进制串; 2441. 与对应负数同时存在的最大正整数;1054. 距离相等的条形码;1072. 按列翻转得到最大值等行数;2446. 判断两个事件是否存在冲突;1080. 根到叶路径上的不足节点;_leetcode每日一题

大模型参数高效微调技术原理综述(二)-BitFit、Prefix Tuning、Prompt Tuning-程序员宅基地

文章浏览阅读671次。Prompt token 的长度在20左右时的表现已经不错(超过20之后,提升Prompt token长度,对模型的性能提升不明显了),同样的,这个gap也会随着模型参数规模的提升而减小(即对于超大规模模型而言,即使 Prompt token 长度很短,对性能也不会有太大的影响)。同时,通过实验结果还可以看出,BitFit微调结果相对全量参数微调而言, 只更新极少量参数的情况下,在多个数据集上都达到了不错的效果,虽不及全量参数微调,但是远超固定全部模型参数的Frozen方式。另一方面也会占很多存储空间。

Notice: Undefined variable: server in的解决方法_undefined variable: _server-程序员宅基地

文章浏览阅读2.2k次。PHP中遇见这种问题的解决方法就是php.ini这个配置文件修改一行代码,解决方法如下:在php.ini中error_reporting = E_ALL (笔记本自带查找功能,查找之后进行替换即可,不用一行一行对着找)修改成error_reporting = E_ALL & ~E_NOTICE (再重启apache2.2就行了)..._undefined variable: _server

通俗易懂TypeScript的高级类型方法------Partial, Required, Pick, Omit, Readonly, NonNullable_在 typescript 中,如何实现 partial<t>,以使得: typescript typ-程序员宅基地

文章浏览阅读519次。通俗易懂TypeScript的高级类型方法------Partial, Required, Pick, Omit, Readonly, NonNullable_在 typescript 中,如何实现 partial,以使得: typescript type user = { id

随便推点

内网安装hbuilderx内置终端等插件遇到的问题(自我问题记录)_内置终端插件下载失败,请到官网下载app开发版(完整包)-程序员宅基地

文章浏览阅读3k次。安装hbuilderx时一般是从官网下在安装包,然后在内网解压后直接使用,但是内网不能下载内置终端等插件还需要从外网hbuilderx软件的工据-插件安装选项找到插件下载,再放入对应的插件包内,这个方法适何后续因需求要安装插件,但是有些一般必定要用插件还要再装就比较麻烦。所以只要在外网解压该包,然后打开hbuilderx,下载完所需要插件,再打包该软件,把打包的文件放入内网解压就行了..._内置终端插件下载失败,请到官网下载app开发版(完整包)

性能测试能力提升 —— 线程、并发、吞吐量、TPS、QPS、响应时间_吞吐率 tps-程序员宅基地

文章浏览阅读805次,点赞17次,收藏26次。相对并发:指在一个时间段内发生的事情。在jmeter的测试计划中添加线程组,设置线程属性,2秒之内启动10个线程,其对应的相对并发为5(线程数/启动时间)。绝对并发:指在同一时刻发生的事情。jmeter可以使用同步定时器(Synchronizing Timer)实现绝对并发,也就是同一个时刻达到了某一集合点才发出请求。_吞吐率 tps

java dijkstra算法代码_Dijkstra算法及其证明-程序员宅基地

文章浏览阅读68次。算法:设G是带权图,图中的顶点多于一个,且所有的权都为正数。本算法确定从顶点S到G中其他各个顶点的距离和最短通路。在本算法中P表示带永久标记的顶点的集合。顶点A的前驱是P中的一个顶点,用来标记A。顶点U和V之间的边的权重用W(U,V)表示,如果U和V之间没有边,则记作W(U,V)=∞.步骤1 (对S做标记)(a)将S标记为0,并使S没有前驱(b)令P={S}步骤2 (对其他顶点作标记)将每个不在P..._java dijsktra算法

使用Protege4和CO-ODE工具构建OWL本体的实用指南-1.3版本(4.Building An OWL Ontology)_ttl后缀文件用什么软 protege-程序员宅基地

文章浏览阅读580次。2021.10.29.周五,今天又做了一次核酸检测!我开始阅读我需要的内容!别人的话,即使激励也是焦虑的开始!有压力才有动力!没有动力,就没有办法拼搏!但是,方向要对啊!不能被误导了!学着分辨!(PS:觉得先打个稿子吧!等到10分钟的时候再走!21:10的时候!)Building An OWL Ontology4.1这个教程使用的protege好像不是一个版本的!..._ttl后缀文件用什么软 protege

Debian lxde 自动登录设置_debian开机自动登录-程序员宅基地

文章浏览阅读7.3k次。个人电脑一直使用debian,但是每次开机都要输入用户名和密码,显得有些繁琐。另外,电脑只有我一个人用,也不用靠密码来保护什么个人隐私。所以干脆就设置上自动登录。方法:修改 /etc/lightdm/lightdm.conf文件,在文件中找到#autologin-user=,修改为autologin-user=USER,将USER替换为你的用户名。重启后,发现真的不用输_debian开机自动登录

SpringBoot:统一处理null数据类型默认值_spriongboot统一返回 null 返回-程序员宅基地

文章浏览阅读1.1k次,点赞8次,收藏8次。【代码】Springboot:统一处理null数据类型默认值。_spriongboot统一返回 null 返回

推荐文章

热门文章

相关标签