Um das Versenden und Empfangen von MQTT-Nachrichten testen zu können, wird ein MQTT-Broker benötigt. Zu Testzwecken wird eine Instanz des Open-Source Brokers Eclipse Mosquitto verwendet. Da die Software als fertiges Docker-Image auf Docker Hub bereitsteht, ist die Inbetriebnahme in wenigen Schritten erledigt.

Voraussetzungen:

  • docker-engine installiert (Vorgehen nach offizieller Anleitung)
  • Berechtigungen für docker (Benutzer in Gruppe „docker“)

Image herunterladen

Zunächst wird das Image mit dem folgenden Befehl aus Docker Hub heruntergeladen.

docker image pull eclipse-mosquitto:latest

Dokumentation zum verwendeten Image

Minimale Konfiguration

Damit der Broker nach dem Start eines Containers verwendbar ist, muss mindestens eine minimale Konfigurationsdatei erstellt werden. In dieser wird der Port festgelegt und für Testzwecke unautorisierter Zugriff erlaubt.

Datei home/johannes_docker/mqtt/mosquitto.conf


listener 1883
allow_unauthorized true

Damit die erstellte Konfigurationsdatei von der im Container startenden Instanz berücksichtigt wird, muss die Datei als Volume eingebunden werden.

Starten eines Containers

Der Befehl zum Erzeugen und Starten eines Containers lautet wie folgt.

docker container run -d --name mqtt -p 1883:1883 -p 9001:9001 -v /home/johannes_docker/mqtt/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto

Das wars! Der MQTT-Broker ist einsatzbereit.

Verwaltung des erstellten Containers

Zur Verbindung wird die IP-Adresse des Geräts auf dem der Container gestartet wurde als Host angegeben. Als Port wurde der Standard-Port 1883 verwendet.

Der Container kann mit

docker container stop mqtt

gestoppt werden und danach mit

docker container start mqtt

fortgesetzt werden.

Mit

docker container rm mqtt

kann der Container gelöscht werden, nachdem er gestoppt wurde.

MQTT-Broker zu Testzwecken aufsetzen

Ein Kommentar zu „MQTT-Broker zu Testzwecken aufsetzen

  • 15. Mai 2021 um 9:07
    Permalink

    Sehr schöne Anleitung. Hier noch eine kleine Beschreibung, was die Parameter beim Start des Containers bedeuten:

    -d
    Als „Daemon“ im Hintergrund ausführen

    –name mqtt
    Name des Containers selbst wählen, statt dass Docker einen Namen erfindet

    -p 1883:1883
    -p 9001:9001
    Die Ports 1883 und 9001 des Hosts werden an die gleichen Ports im Container weitergeleitet, um den MQTT-Server „von außen“ erreichbar zu machen

    -v mosqitto.conf:/mosquitto/config/mosquitto.conf
    Die Datei mosqitto.conf des Hosts wird unter dem Pfad /mosquitto/config/mosquitto.conf im Container eingebunden. Dieselbe Technik wird auch benötigt, um dem Container Verzeichnisse für die dauerhafte Datenspeicherung zur Verfügung zu stellen. (Sonst gehen die Daten beim nächsten Neustart des Containers verloren)

    eclipse-mosquitto
    Der Name des Images, das vom Docker Hub geladen und ausgeführt werden soll.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.