拉取mosquitto镜像
docker pull eclipse-mosquitto:latest
在本地创建目录
mkdir /home/mosquitto
cd /home/mosquitto
mkdir config
mkdir data
mkdir log
创建配置文件
vi /config/mosquitto.conf
#配置文件中添加下述内容
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
listener 1883
修改目录权限
chmod -R 755 /home/mosquitto && chmod -R 777 /home/mosquitto/log
创建并运行容器
docker run -it --name=mosquitto --privileged --restart=unless-stopped \
-p 1883:1883 -p 9001:9001 \
-v /home/dxy/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf \
-v /home/dxy/mosquitto/data:/mosquitto/data \
-v /home/dxy/mosquitto/log:/mosquitto/log \
-d eclipse-mosquitto
#参数解释
-d:在后台运行容器
–name:容器名
-v:将容器内的目录映射到容器外
-p:端口映射
若在创建容器后想修改docker容器的权限,可执行以下命令
docker container update 参数名称 容器名字
#例
docker container update --restart=always mosquitto
开始设置密码
vi /home/mosquitto/config/mosquitto.conf
#在配置文件中添加下述内容
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf
进入mosquitto容器
docker exec -it mosquitto sh
创建并修改密码文件权限
touch /mosquitto/config/pwfile.conf && chmod -R 755 /mosquitto/config/pwfile.conf
使用mosquitto_passwd命令创建用户
mosquitto_passwd -b /mosquitto/config/pwfile.conf 用户名 密码
重启容器
docker restart mosquitto
在home assistant页面>配置>集成中添加MQTT