在docker中安装MQTT教程

2023-09-15 15:40:24

网上的好多关于在docker中安装MQTT教程都是错误的不完整的。这篇博客是完整的,实践过的,踩过了很多的坑得来的,欢迎大家享用!

1、首先在docker中拉取镜像
docker pull eclipse-mosquitto
2、创建配置文件目录
mkdir -p /docker/mosquitto/config
mkdir -p /docker/mosquitto/data
mkdir -p /docker/mosquitto/log

注意:这个地方的目录是宿主机目录

3、在宿主机创建配置文件
#存放基本配置
touch /docker/mosquitto/config/mosquitto.conf

#存放用户密码配置文件
touch /docker/mosquitto/config/pwfile.conf

#日志目录
touch /docker/mosquitto/log/mosquitto.log
4、修改配置文件
vi /docker/mosquitto/config/mosquitto.conf

注意:这里的路径是宿主机路径

具体文件如下:
这里的所有路径,指向的都是 docker 的路径,不需要修改!!!

persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

listener 1883
#协议模式,可以不指定
#protocol websockets

# 关闭匿名模式
allow_anonymous false

#指定密码文件
password_file /mosquitto/config/pwfile.conf

5、修改文件权限
chmod -R 755 /docker/mosquitto
chmod -R 777 /docker/mosquitto/log #日志目录要最大权限

注意:这里的目录是宿主机目录

6、启动命令
docker run -it --name=mosquitto --privileged  -p 1883:1883 -p 9100:9001 -v /docker/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf  -v /docker/mosquitto/data:/mosquitto/data -v /docker/mosquitto/log:/mosquitto/log -v /docker/mosquitto/config/pwfile.conf:/mosquitto/config/pwfile.conf -d  eclipse-mosquitto 
命令详解:
1883是应用的端口,9001是管理程序的端口。要将宿主机和容器之间的文件关系进行映射,
冒号前面的是宿主机配置,冒号后面是容器配置
比如:-p 1883:1883  前面是宿主机端口 ,后面是容器端口,因此需要在宿主机的防火墙中放开1883这个端口。其他配置都是类似,需要了解。

好多网上的启动命令没有这一句话:-v /docker/mosquitto/config/pwfile.conf:/mosquitto/config/pwfile.conf
就会报找不到文件的错误:Error: Unable to open log file /mosquitto/log/mosquitto.log for writing.
一定记得把宿主机的文件目录和容器的目录映射起来,这样在启动的时候,就不会报错。

7、账号密码修改

进入mosquitto容器

docker exec -it mosquitto sh

mosquitto_passwd -b /mosquitto/config/pwfile.conf test test2023  #设置账号密码

exit退出容器

8、重启容器
docker restart mosquitto
9、客户端访问

下载MQTT.fx进行配置访问,如下图:
在这里插入图片描述
以上,就是本次的详细过程!

更多推荐

如何在Windows11上使用macOS Sonoma全新的慢镜屏幕保护程序

前言macOSSonoma是ApplemacOS一个大版本的描述,以任何方式使用macOSSonoma都应确保符合Apple的规定本文假定你在搭载Intel处理器的Apple产品上通过bootcamp安装了Windows11,且想要让Windows11产生类似于macOSSonoma全新的慢镜屏幕保护程序的相关体验。操

Spring学习笔记2 Spring的入门程序

Spring学习笔记1启示录_biubiubiu0706的博客-CSDN博客Spring官网地址:https://spring.io进入github往下拉用maven引入spring-context依赖写spring的第一个程序引入下面依赖,好比引入Spring的基本依赖<dependency><groupId>org

【JAVA-Day38】深入了解Java常用类 String:字符串操作的技巧和方法

深入了解Java常用类String:字符串操作的技巧和方法深入了解Java常用类String:字符串操作的技巧和方法摘要引言一、什么是String类1.1字符串的不可变性1.2字符串的创建方式1.3字符串的操作1.4字符串池(StringPool)1.5字符串操作的性能考虑二、String类的方法2.1length2.

Mybatis中的动态SQL

Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。一、if(单独使用较少)if标签可通过test属性(即传递过来的数据)的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;反之标签中的内容不会执行使用if时,通常在wher

美团接口自动化测试实践

一、概述1.1接口自动化概述众所周知,接口自动化测试有着如下特点:低投入,高产出。比较容易实现自动化。和UI自动化测试相比更加稳定。如何做好一个接口自动化测试项目呢?我认为,一个“好的”自动化测试项目,需要从**“时间”、“人力”、“收益”**这三个方面出发,做好“取舍”。不能由于被测系统发生一些变更,就导致花费了几个

【Vue】深究计算和侦听属性的原理

hello,我是小索奇,精心制作的Vue系列教程持续更新哈,涵盖大量的经验和示例,由浅入深进行讲解,想要学习&巩固&避坑就一起学习吧~计算和侦听属性计算属性重点概要定义:要用的属性不存在,需要通过已有属性计算得来原理:底层借助了Objcet.defineproperty()方法提供的getter和setter来计算属性

git的使用

Git是一种版本控制系统,它可以跟踪文件的更改历史。以下是Git的基本概念和使用方式:仓库(Repository):Git用仓库来存储文件和版本历史。可以在本地电脑上创建一个仓库,或者使用GitHub等在线仓库托管服务。提交(Commit):Git通过提交来记录文件更改历史。每次提交都包含一条消息,描述本次更改的内容。

以京东平台为例写一份电商平台API接口文档

公共参数请求地址:申请调用KEY地址名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[

关于什么是框架

框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。IT语境中的框架,特指为解决一个开放性问题而设计的具有一定性的支撑结构。在此结构上约束可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。目前还没看到什么有趣的个人化解释,可能是因为要解决都复杂到设计出框架

u盘上面 安装 ubuntu 系统

u盘上面安装ubuntu系统下载一个Ubuntu22.04.3LTS桌面版https://ubuntu.com/download/desktop找到一个U盘参考文章:把Ubuntu装到U盘里随身携带,并同时支持BIOS和UEFI启动https://www.luogu.com.cn/blog/GGAutomaton/po

消息队列-rabbitMq

消息队列(MQ)到底能干什么?MQ全称为MessageQueue,也就是消息队列,是应用程序和应用程序之间的通信方法。在微服务盛行的当下,MQ被使用的也是越来越多,一般常用来进行业务异步解耦、解耦微服务、流量削峰填谷、消息分发、分布式事务的数据一致性。1、业务异步解耦最常见的场景就是用户注册之后,需要发送注册短信、邮件

热文推荐