🐋

DockerでEclipse Mosquittoを動かす

2023/07/22に公開

はじめに

DockerでEclipse Mosquitto(MQTTブローカー)を構築します。

以下の環境で実行しました。
※Windows

OS Windows 11 Home
メモリ 16GB
その他 Docker Desktopインストール済

※Linux(lsb_release -a コマンドで確認)

OS ubuntu 23.04
メモリ 16GB
その他 Docker Desktopインストール済

用語集

用語 意味
IoT (Internet of Things)様々なモノがインターネットに繋がる仕組みのこと
MQTT (Message Queueing Telemetry Transport)IoTの通信を行うのに使われるプロトコル。非常に軽量なため低スペックの機器でも通信ができる。
MQTTブローカー IoTデバイスがどのメッセージを送信しているかを判断し、メッセージの中継、多対多の通信を行う。

設定ファイルの作成

Eclipse Mosquittoの設定ファイル(mosquitto.conf)を、Windows(またはLinux)のローカルファイルに作成します。

mosquitto.conf
listener 1883
allow_anonymous true
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log

Dockerの実行

Windows

設定ファイルはd:\docker\eclipse-mosquitto\mosquitto.conf にある前提とします。

コマンドプロンプトから以下を実行します。(Windowsで起動する場合は、環境ファイルのパスの記述に注意します。)

コマンドプロンプト
docker run -it -p 1883:1883 -p 9001:9001 -v /d/docker/eclipse-mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/data -v /mosquitto/log --name mymosquitto eclipse-mosquitto

Linux

Linuxでホームディレクトリの下に「~/eclipse-mosquitto/mosquitto.conf」のように設定ファイルを作成した場合は、以下のコマンドを実行します。

端末
docker run -it -p 1883:1883 -p 9001:9001 -v ~/eclipse-mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/data -v /mosquitto/log --name mymosquitto eclipse-mosquitto

動作確認

受信側(Subscriber)

受信側の設定をします。以下のコマンドを実行し、Dockerコンテナの中に入ります。

端末
docker exec -it mymosquitto /bin/sh

以下を実行します。メッセージをやり取りするトピックは[test/topic]とします。

/#
mosquitto_sub -t test/topic

送信側(Publisher)

送信側の設定をします。別の端末を起動し、以下のコマンドを実行してDockerコンテナの中に入ります。

端末
docker exec -it mymosquitto /bin/sh

以下を実行します。メッセージをやり取りするトピックは[test/topic]とします。

/#
mosquitto_pub -t test/topic -m 'hello world!'

受信側でhello world!が表示されていればOKです。
下の端末画面では、上が受信側、下が送信側になります。(Linuxの端末画面)

更新履歴

2023/7/22 作成

Discussion