docker安装mosquitto
1.获取mqtt镜像
docker pull eclipse-mosquitto
2.启动mqtt
docker run -it --name=mosquitto -p 1883:1883 -d eclipse-mosquitto
3更改账号密码:
- 进入容器中
docker exec -it mosquitto sh
- 进入
cd /mosquitto/config
,打开配置文件vi mosquitto.conf
- 增加
listener 1883
,这个不添加,只有本机才能够访问,其它地址访问不了。设置allow_anonymous false
,这个配置文件中有,打开注释即可,含义为不允许匿名登录。可以/ allow_anonymous false
进行搜索,按n键搜索下一条。搜索password_file
,打开注释,在password_file
后面加上/mosquitto/config/pwdfile.conf
,保存退出,写绝对地址,不要写相对地址,这个设置的是存放密码的文件的位置。 - 退出到
mosquitto.conf
所在位置,建立一个文件touch pwdfile.conf
,写入账号密码:mosquitto_passwd -b pwdfile.conf admin public
(admin 是账号,public 是密码) - 退出容器,重启服务。
docker restart mosquitto
。
注意
这个是在mosquitto 2.xx版本中的操作,如果不配置密码,客户端会显示无权限连接
docker-compose安装mosquitto
version: "3.7"
services:
mqtt:
image: eclipse-mosquitto:latest
container_name: mosquitto
privileged: true
ports:
- "1883:1883"
- "19001:9001"
volumes:
- /mnt/docker/mosquitto/config:/mosquitto/config
- /mnt/docker/mosquitto/data:/mosquitto/data
- /mnt/docker/mosquitto/log:/mosquitto/log
restart: on-failure
在 docker-compose
文件中定义的 conf
目录中放入 mosquitto.conf
文件
persistence true
# 定义监听端口,如果不定义则只能本地访问
listener 1883
# 定义数据存放目录
persistence_location /mosquitto/data
# 定义日志存放路径
log_dest file /mosquitto/log/mosquitto.log
# 匿名模式 false开启,true关闭
# allow_anonymous false
# 指定密码文件
# password_file /mosquitto/config/pwfile.conf
使用 docker-compose
启动
docker-compose -f docker-compose-mqtt.yml up -d
此时连接时没有密码的,密码配置:
- 修改配置文件
# 关闭匿名模式 allow_anonymous true
- 指定密码文件
- 进入docker内部生成密码,进入容器内部
docker exec -it mqtt sh
- 生成文件 创建密码
touch /mosquitto/config/pwfile.conf chmod -R 755 /mosquitto/config/pwfile.conf
- 进入docker内部生成密码,进入容器内部
- 使用mosquitto_passwd命令创建用户 admin是用户名,admin_123是密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf admin admin_123
- 退出容器,重启容器