1.docker拉取
docker pull eclipse-mosquitto
2.查看镜像
docker images
3.建立配置目录
mkdir -p /mosquitto/config
mkdir -p /mosquitto/data
mkdir -p /mosquitto/log
4.建立配置文件,大部分教程缺少:listener 1883
vi /mosquitto/config/mosquitto.conf
写入以下内容
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false #关闭匿名模式
password_file /mosquitto/config/pwfile.conf #指定密码文件
5.为目录授权
chmod -R 755 /mosquitto
chmod -R 777 /mosquitto/log #日志目录要最大权限
6.建立运行脚本mosquitto.sh
docker run -it --name=mosquitto --privileged -p 1883:1883 -p 9001:9001 -v /mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/data:/mosquitto/data -v /mosquitto/log:/mosquitto/log -d eclipse-mosquitto
提示【Error: Unable to open log file /mosquitto/log/mosquitto.log for writing.】
则删了已有的日志文件重新建一个并授权再启动即可。
7.查看容器
docker pscd ..
8.进入容器
docker exec -it 3fdbb2bc353c sh
9.生成密码
#对于passworf_file,可以复制一份模板,或者创建一个空文件
touch /mosquitto/config/pwfile.conf
chmod -R 755 /mosquitto/config/pwfile.conf
使用mosquitto_passwd命令创建用户,第一个test是用户名,第二个test2022是密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf test test2019
退出容器
10.重启mqtt服务
docker restart 容器id
11.使用MQTT.fx进行连接,服务器要开对应端口