The official dockerhub link.

  • Create config file mosquitto.conf under /data/mosquitto/config/
# allow_anonymous true
listener 1883
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
password_file /mosquitto/pwd*
  • Create file pwd under /mosquitto/ in docker
touch pwd
  • Add user for pwd
mosquitto_passwd -c /mosquitto/pwd root
  • Execute following line to start mqtt docker container
docker run -it -d --name mosquitto -v /data/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /data/mosquitto/data:/mosquitto/data -v /data/mosquitto/log:/mosquitto/log --restart always -p 1883:1883 -p 9001:9001 eclipse-mosquitto

Now you can use cli to test your mqtt

  • Subscribe data
docker run --rm hivemq/mqtt-cli sub -t '#' -h ourdark.org -u root -pw Forhuman1999@
  • publish message
docker run --rm -it hivemq/mqtt-cli pub -t test -h ourdark.org -m "aaa"

or

docker run --rm -it hivemq/mqtt-cli shell
con -i test -h ourdark.org
pub -t test -m "aaa"

Enable Websocket

Add flollowing lines to config file:

listener 8080
protocol websockets

Then restart docker and expose port 8080

docker run -it -d --name mosquitto -v /data/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /data/mosquitto/data:/mosquitto/data -v /data/mosquitto/log:/mosquitto/log --restart always -p 1883:1883 -p 9001:9001 -p 8080:8080 eclipse-mosquitto

Well, you can use your single node mqqt server, it support mqtt and websocket protocol now.