在docker中安装MQTT教程

网上的好多关于在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进行配置访问,如下图:
在这里插入图片描述
以上,就是本次的详细过程!

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要在Docker容器安装MQTT服务器,可以按照以下步骤进行操作: 1. 首先,确保你已经安装DockerDocker Compose。如果尚未安装,请根据你的操作系统执行相应的安装步骤。 2. 创建一个新的目录,用于存储你的MQTT配置文件。在该目录创建一个名为`docker-compose.yml`的文件。 3. 打开`docker-compose.yml`文件,并添加以下内容: ```yaml version: '3' services: mqtt: image: eclipse-mosquitto volumes: - ./mosquitto.conf:/mosquitto/config/mosquitto.conf - ./data:/mosquitto/data - ./log:/mosquitto/log ports: - 1883:1883 ``` 这将使用Eclipse Mosquitto镜像创建一个名为`mqtt`的Docker服务。它将挂载配置文件、数据和日志目录,并将容器内部的1883端口映射到主机的1883端口。 4. 在同一目录创建一个名为`mosquitto.conf`的文件,用于配置MQTT服务器。可以使用下面的示例配置: ``` persistence true persistence_location /mosquitto/data/ log_dest file /mosquitto/log/mosquitto.log allow_anonymous true ``` 这个配置文件启用了数据持久化、定义了日志位置,并允许匿名连接。 5. 保存`mosquitto.conf`文件,并在终端进入到`docker-compose.yml`所在的目录。 6. 运行以下命令启动MQTT服务器容器: ``` docker-compose up -d ``` 7. 现在,你的MQTT服务器应该已经在Docker容器运行了。你可以使用MQTT客户端连接到`localhost:1883`来测试它。 这是一个简单的使用Docker安装MQTT服务器的方法。你可以根据自己的需求进行更多的配置和定制。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪家的胖企鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值