0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mosquittoの動かし方

Last updated at Posted at 2023-02-22

はじめに

本ドキュメントでは、試験環境での利用を目的としたMQTT Broker (mosquitto)のセットアップ手順を記します。

前提条件

  • コンテナ実行環境 (AMD64以外にもARM64などに対応しているようです。私はAMD64環境で確認しています。)

mosquittoの設定

準備作業

mosquittoコンテナイメージを取得します。

docker pull eclipse-mosquitto

mosquitto.confを用意します。デフォルトのmosquitto.confは、外部との通信ができない状態なので、下記を追加し、通信可能な状態とします。この手順は、SSL/TLS設定、認証、クライアント(Publisher/Subscriber)のIP制限などセキュリティ面を考慮しておらず、試験環境での利用目的としてご利用下さい。

allow_anonymous true
listener 1883 0.0.0.0
log_dest file /mosquitto/log/mosquitto.log

実行

docker runコマンドを実行し、mosquittoを起動します。上記にて作成したmosquitto.confを/mosquitto/config/mosquitto.confとしてマウントして使用します。{ホストマシンのconfファイルのフルパス}:{上記パス}と記載すれば機能します。

docker run -d -p 1883:1883 -v /home/ubuntu/mosq/config/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto

確認

MQTTXなどで、{ip address}:1883として接続確認およびメッセージの送受信を確認します。

MQTTXの設定例
MQTTX_connection_conf.png

(オプション) m1 macでlimaなどを使う場合

ファイルシステムの違いなどからdocker run時にファイルを読ませることが難しい場合やlogファイル用ディレクトリのマウントができない場合などがあります。その場合は、こちらの手順を実施すれば起動できます。

FROM eclipse-mosquitto
COPY mosquitto.conf /mosquitto/config/
docker build -t my-mosquitto .
docker run -d -p 1883:1883 my-mosquitto

失敗例

local only modeなので外部との通信ができません。

docker logs {Container ID}
1677048864: mosquitto version 2.0.15 starting
1677048864: Config loaded from /mosquitto/config/mosquitto.conf.
1677048864: Starting in local only mode. Connections will only be possible from clients running on this machine.
1677048864: Create a configuration file which defines a listener to allow remote access.
1677048864: For more details see https://mosquitto.org/documentation/authentication-methods/
1677048864: Opening ipv4 listen socket on port 1883.
1677048864: Opening ipv6 listen socket on port 1883.
1677048864: Error: Address not available
1677048864: mosquitto version 2.0.15 running

mosquitto.confファイルのフルパスを間違えてコンテナに渡し損ねたため、起動しない。docker stop {Container ID}ののち、docker rm {Container ID}すれば削除できます。

docker run -d -p 1883:1883 -v /home/ubuntu/mosq/config/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto
5f258d3291e5b1d69e02bec93c41249ed189cd3c12be10ce9b4f7cba473f2c8e
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/home/ubuntu/mosq/config/mosquitto.conf" to rootfs at "/mosquitto/config/mosquitto.conf": mount /home/ubuntu/mosq/config/mosquitto.conf:/mosquitto/config/mosquitto.conf (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
ubuntu@gmktec:~/mosquitto$ docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS        PORTS                                                                     NAMES
5f258d3291e5   eclipse-mosquitto                    "/docker-entrypoint.…"   5 seconds ago   Created       0.0.0.0:1883->1883/tcp, :::1883->1883/tcp                                 brave_dirac

参考情報

docker hub/eclipse-mosquitto

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?