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.
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.