我的docker随笔41:mqtt服务部署

这篇具有很好参考价值的文章主要介绍了我的docker随笔41:mqtt服务部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、引言

因工作需要,需部署 mqtt 服务器进行测试。

二、技术小结

  • dockerhub 上相关镜像,直接拉取可用。经查,eclipse-mosquitto有官方认证OFFICIAL,故使用之,版本为2.0.15
  • 先启动容器,获取配置文件,并设置用户和密码,生成账户文件。
  • 修改配置,挂账户文件。
  • 使用客户端测试。

三、实践

下载

命令:

docker pull eclipse-mosquitto:2.0.15

获取配置

获取配置文件,创建密码:

docker run --rm -it -v /tmp/config:config/mqtt --rm --name mqtt eclipse-mosquitto:2.0.15 sh

cd /tmp/config/
cp /mosquitto/config/mosquitto.conf .

touch /tmp/config/latelee.conf
mosquitto_passwd -b /tmp/config/latelee.conf latelee 123456
cat /tmp/config/latelee.conf 
latelee:$7$101$8uztnbWciNtQhAB+$ElyWv714QaN8E/DOt9wzN/fRs9MdXtmpuq1xJifPKVfno1meGzCp4UnkZErM3WbaZtWIL/tKaxq72dXJ8oRwKw==
exit

如要创建多个用户,执行mosquitto_passwd -b /tmp/config/latelee.conf <用户> <密码>即可。

修改配置

重新编辑文件mosquitto.conf

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

allow_anonymous false
password_file /mosquitto/config/latelee.conf

# 默认端口是 1883
port 1883

# 以下两行表示可以通过9001端口以websocket的方式连接mosquitto服务
#listener 9001
#protocol websockets

docker-compose配置

docker-compose.yaml文件内容:

  ll-mqtt:
    image: eclipse-mosquitto:2.0.15 
    container_name: ll-mqtt
    hostname: ll-mqtt
    # privileged: true 
    restart: always
    #command: xxx
    volumes:
      - ./config/mqtt:/mosquitto/config
      - ./mqttdata:/mosquitto/data
      - ./mqttlog:/mosquitto/log
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "11883:1883"
      #- "19001:9001"
    networks:
      stdtoll-net:
        ipv4_address: 172.18.200.30

启动:

docker-compose up -d ll-mqtt

注:似乎启动较慢

四、测试

使用MQTTX工具测试,地址在此。

新建链接

链接配置示例如下:
docker mqtt服务器搭建,虚拟化-docker,docker,java,eclipse
)]

输入信息正确后,连接成功:
docker mqtt服务器搭建,虚拟化-docker,docker,java,eclipse
)]

新加订阅

使用默认Topic
docker mqtt服务器搭建,虚拟化-docker,docker,java,eclipse

发送消息

选择订阅,输入Topic,发送。如图所示。
docker mqtt服务器搭建,虚拟化-docker,docker,java,eclipse

五、多用户测试

为行文简洁,与前面的操作相同的略去。

添加多个用户信息:

mosquitto_passwd -b /tmp/config/latelee.conf latelee1 123456
# cat latelee.conf 
latelee:$7$101$sBW5H73ll8re2i1F$JHHLDgQC8QN/Ig2y3dYw4QOVvAx1HyBSc94KW7y6E3rlCyDdeC909GhRjS5BW5RM4AARzO6xknhmDt1PvahAxA==
latelee1:$7$101$iZDWCtfmj9oby9BH$RoSTqv37knkc9Ow1O9f7N241KBv1TiLXRphg4xOnLQuHxEj5PQHcjLRkxj34Eqbjz6Cvvs2f1vgf9o+Kgg3qPg==
latelee2:$7$101$AcmF60V2ymIiGSJh$55FiXACOO7k9d20Pz4nt/mSTryVsQ+L+G59ihjDziz408JZWaIm41fisIu0AYITxZ+5bDgHM1IXPkjYos+AT6Q==
latelee3:$7$101$jCVWCbIsbRNuP+zv$IGdfF/E5LVWxRUSk3a+x5AXks9tFFbN3R6cqBnoq+aHpQxvzqrcn8fJtuSz2e3uokZyiPTosumcTx15cyeqkpA==

待实现。

参考:https://www.ifsvc.cn/posts/160

六、高阶

挂载的文件,用户会变成1883,因为在镜像中设置了,但系统没有其对应的用户名。

镜像中的用户:

cat /etc/passwd
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
mosquitto:x:1883:1883:mosquitto:/var/empty:/sbin/nologin

其中用户mosquitto的ID为1883。在镜像的启动脚本中更改了目录权限:

cat /docker-entrypoint.sh 
#!/bin/ash
set -e

# Set permissions
user="$(id -u)"
if [ "$user" = '0' ]; then
        [ -d "/mosquitto" ] && chown -R mosquitto:mosquitto /mosquitto || true
fi

exec "$@"

七、参考

mqtt镜像:https://hub.docker.com/_/eclipse-mosquitto

如果没有指定端口,会提示:

1679721126: mosquitto version 2.0.15 starting
1679721126: Config loaded from /mosquitto/config/mosquitto.conf.
1679721126: Starting in local only mode. Connections will only be possible from clients running on this machine.
1679721126: Create a configuration file which defines a listener to allow remote access.
1679721126: For more details see https://mosquitto.org/documentation/authentication-methods/
1679721126: Opening ipv4 listen socket on port 1883.
1679721126: Opening ipv6 listen socket on port 1883.
1679721126: Error: Address not available
1679721126: mosquitto version 2.0.15 running

连接日志:

1679721710: New connection from 192.168.28.11:62840 on port 1883.
1679721710: New client connected from 192.168.28.11:62840 as mqttx_5607984c (p5, c1, k60, u'latelee').
1679721767: New connection from 192.168.28.11:62868 on port 1883.
1679721767: New client connected from 192.168.28.11:62868 as mqttx_67e55882 (p5, c1, k60, u'latelee').

使用MQTTX工具发送消息时,必须输入正确的 Topic,且不能带有“#”之类的通配符。
docker mqtt服务器搭建,虚拟化-docker,docker,java,eclipse文章来源地址https://www.toymoban.com/news/detail-768546.html

到了这里,关于我的docker随笔41:mqtt服务部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云Ubuntu安装部署EMQX物联网MQTT服务器

    阿里云服务器免费领取https://developer.aliyun.com/adc/student/ Xshell 云服务器可以通过远程连接的方式进行控制 1.下载安装包 XShell官网  2.简单配置 名称:随便即可 主机:服务器IP地址 端口号:默认22端口 连接后输入用户名(通常为root),密码后成功进入服务器终端    此外,还有

    2023年04月13日
    浏览(31)
  • 前端mqtt的详细使用(包含mqtt服务器部署,前端vue3使用mqtt连接、订阅主题、发布等)

    ​ MQTT(消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的通讯协议,该协议构建于TCP/IP协议上。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。MQTT 协议的应用场景包括物联网、移动应用、车联网、智能

    2024年02月08日
    浏览(51)
  • 【自用】云服务器 使用 docker 搭建 HomeAssistant + MQTT 物联网平台

    1.搭建流程概述 2.准备工作 3.开始搭建! 4.总结 如果想看 ESP32 或其他使用 MicroPython 编程的单片机如何连接到该云服务器,实现 HomeAssistant 控制 单片机的内容,请看我这篇博客的下一篇。 0.总体流程 我们需要先有一台云服务器,然后在上面搭建 docker(用宝塔傻瓜式搭建就行

    2024年02月13日
    浏览(34)
  • ubuntu18.04.6 搭建mqtt服务器emqx 之docker方式

    前提docker环境已经安装好 如未安装,请参考博文https://blog.csdn.net/a554521655/article/details/134251763

    2024年01月20日
    浏览(35)
  • 【手把手教你搭建MQTT服务器 + 域名备案 + 申请与部署SSL证书】

    购买云服务器 可以按照自己情况买,新用户有优惠的,然后有些平台完成学生认证也是有优惠的 本人选购的是轻量应用服务器2核2G4M的,装的Ubuntu 20.04LTS,Linux系统 重置终端密码,配置防火墙,开启SSH远程登录 腾讯云默认用户名为Ubuntu,首次购买后需要重置密码才可通过用

    2024年01月17日
    浏览(44)
  • 【docker】部署svn服务器,docker安装部署svn服务器

    话不多说直接上步骤! 以上代码中,在容器中的/home/svn/test目录创建代码仓库,会同步到本机的/var/svn目录。我们先进行svn仓库配置。 SVN库中的配置目录 conf 有三个文件: 配置权限配置文件 authz 编辑 authz ,内容参考如下: 配置账号密码文件 passwd 编辑 passwd ,内容参考如下:

    2024年02月02日
    浏览(43)
  • YAPI部署服务器(Docker)

    YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。 可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的

    2024年02月07日
    浏览(35)
  • docker服务器部署Django

    Django是一个广泛使用的Python Web框架,而Docker是一个增强应用程序部署的流行容器平台。结合这两个技术,可以轻松地部署和维护Django应用程序。在本文中,我们将探讨如何使用Docker在服务器上部署Django应用程序。 1、安装Docker和Docker Compose 在开始之前,需要先安装Docker和Doc

    2024年02月14日
    浏览(36)
  • Docker部署Minio (服务器上部署Minio)

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。 MinIO 提供高性能、与S3 兼

    2024年02月09日
    浏览(84)
  • Django进行docker服务器部署

    Django是一个广泛使用的Python Web框架,而Docker是一个增强应用程序部署的流行容器平台。结合这两个技术,可以轻松地部署和维护Django应用程序。在本文中,我们将探讨如何使用Docker在服务器上部署Django应用程序。 1、安装Docker和Docker Compose 在开始之前,需要先安装Docker和Doc

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包