dockerHub地址:
https://hub.docker.com/_/eclipse-mosquitto
mosquitto开源地址:
https://github.com/eclipse/mosquitto
拉取镜像
docker pull eclipse-mosquitto
准备好挂载目录
mkdir -p /docker/mnt/mosquitto/configmkdir -p /docker/mnt/mosquitto/datamkdir -p /docker/mnt/mosquitto/log
初始化配置文件
vi /docker/mnt/mosquitto/config/mosquitto.conf
内容如下:
persistence truepersistence_location /mosquitto/datalog_dest file /mosquitto/log/mosquitto.loglistener 2001
注意:
- persistence_location, log_dest 目录为docker镜像中的目录无需做修改
listener 2001 默认的端口是1883,但是1883端口在某些操作系统会发生错误,选用一个2000以上的端口
为目录授权
chmod -R 755 /docker/mnt/mosquittochmod -R 777 /docker/mnt/mosquitto/log
建立启动脚本
vim mosquitto.sh
内容如下:docker run -it --name=mosquitto --privileged-p 2001:2001-p 9001:9001-v /docker/mnt/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf-v /docker/mnt/mosquitto/data:/mosquitto/data-v /docker/mnt/mosquitto/log:/mosquitto/log-d eclipse-mosquitto
注意:
2001为mosquitto.conf指定的端口,也是mqtt的连接端口
- 9001是对websocket支持的端口,如果不需要可去除
如果提示【Error: Unable to open log file /mosquitto/log/mosquitto.log for writing.】
则删了已有的日志文件重新建一个并授权再启动即可。配置权限
vim /docker/mnt/mosquitto/config/mosquitto.conf
添加以下配置# 关闭匿名模式allow_anonymous false# 指定密码文件password_file /mosquitto/config/pwfile.conf
进入容器
docker exec -it 6de87a71edc5 sh
生成密码
touch /mosquitto/config/pwfile.conf
chmod -R 755 /mosquitto/config/pwfile.conf
使用mosquitto_passwd命令创建用户,第一个test是用户名,第二个test2020是密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf test test2020
重启mqtt服务
docker restart 6de87a71edc5
