私の docker エッセイ 41: mqtt サービスのデプロイメント

I.はじめに

作業の必要があるため、テストのために mqtt サーバーをデプロイする必要があります。

2. 技術概要

  • dockerhub 上の関連イメージを直接取得して利用できます。確認したところeclipse-mosquitto正式な認証があったOFFICIALのでこのバージョンを使用します2.0.15
  • まずコンテナを起動し、設定ファイルを取得し、ユーザーとパスワードを設定してアカウントファイルを生成します。
  • 構成を変更し、アカウント ファイルを添付します。
  • クライアントテストを使用します。

3. 練習する

ダウンロード

注文:

docker pull eclipse-mosquitto:2.0.15

構成の取得

構成ファイルを取得し、パスワードを作成します。

docker run --rm -it -v /tmp/config:config/mqtt --rm --name mqtt eclipse-mosquitto:2.0.15 sh

cd /tmp/config/
cp /mosquitto/config/mosquitto.conf .

touch /tmp/config/latelee.conf
mosquitto_passwd -b /tmp/config/latelee.conf latelee 123456
cat /tmp/config/latelee.conf 
latelee:$7$101$8uztnbWciNtQhAB+$ElyWv714QaN8E/DOt9wzN/fRs9MdXtmpuq1xJifPKVfno1meGzCp4UnkZErM3WbaZtWIL/tKaxq72dXJ8oRwKw==
exit

複数のユーザーを作成したい場合は、mosquitto_passwd -b /tmp/config/latelee.conf <用户> <密码>そのまま実行してください。

設定変更

ファイルを再編集しますmosquitto.conf

persistence true
persistence_file mosquitto.db
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

allow_anonymous false
password_file /mosquitto/config/latelee.conf

# 默认端口是 1883
port 1883

# 以下两行表示可以通过9001端口以websocket的方式连接mosquitto服务
#listener 9001
#protocol websockets

docker-compose 構成

Docker-compose.yaml ファイルの内容:

  ll-mqtt:
    image: eclipse-mosquitto:2.0.15 
    container_name: ll-mqtt
    hostname: ll-mqtt
    # privileged: true 
    restart: always
    #command: xxx
    volumes:
      - ./config/mqtt:/mosquitto/config
      - ./mqttdata:/mosquitto/data
      - ./mqttlog:/mosquitto/log
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "11883:1883"
      #- "19001:9001"
    networks:
      stdtoll-net:
        ipv4_address: 172.18.200.30

起動する:

docker-compose up -d ll-mqtt

注:起動が遅いようです

4. テスト

MQTTXツールを使用してテストします。アドレスはここにあります

新しいリンク

リンク構成の例は次のとおりです:)
ここに画像の説明を挿入します
]

正しい情報を入力すると、接続が成功します:)
ここに画像の説明を挿入します
]

新しいサブスクリプションを追加する

デフォルトのトピックを使用する
ここに画像の説明を挿入します

メッセージを送ります

サブスクリプションを選択し、トピックを入力して送信します。写真が示すように。
ここに画像の説明を挿入します

5. マルチユーザーテスト

簡単のため、前と同じ操作は省略しています。

複数のユーザー情報を追加します。

mosquitto_passwd -b /tmp/config/latelee.conf latelee1 123456
# cat latelee.conf 
latelee:$7$101$sBW5H73ll8re2i1F$JHHLDgQC8QN/Ig2y3dYw4QOVvAx1HyBSc94KW7y6E3rlCyDdeC909GhRjS5BW5RM4AARzO6xknhmDt1PvahAxA==
latelee1:$7$101$iZDWCtfmj9oby9BH$RoSTqv37knkc9Ow1O9f7N241KBv1TiLXRphg4xOnLQuHxEj5PQHcjLRkxj34Eqbjz6Cvvs2f1vgf9o+Kgg3qPg==
latelee2:$7$101$AcmF60V2ymIiGSJh$55FiXACOO7k9d20Pz4nt/mSTryVsQ+L+G59ihjDziz408JZWaIm41fisIu0AYITxZ+5bDgHM1IXPkjYos+AT6Q==
latelee3:$7$101$jCVWCbIsbRNuP+zv$IGdfF/E5LVWxRUSk3a+x5AXks9tFFbN3R6cqBnoq+aHpQxvzqrcn8fJtuSz2e3uokZyiPTosumcTx15cyeqkpA==

実現すること。

参考:https://www.ifsvc.cn/posts/160

6. 上級者向け

マウントされたファイルのユーザーは1883イメージに設定されているためになりますが、システムには対応するユーザー名がありません。

鏡の中のユーザー:

cat /etc/passwd
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
mosquitto:x:1883:1883:mosquitto:/var/empty:/sbin/nologin

ユーザーmosquittoの ID は です1883イメージの起動スクリプトでディレクトリのアクセス許可が変更されました。

cat /docker-entrypoint.sh 
#!/bin/ash
set -e

# Set permissions
user="$(id -u)"
if [ "$user" = '0' ]; then
        [ -d "/mosquitto" ] && chown -R mosquitto:mosquitto /mosquitto || true
fi

exec "$@"

7. 参考資料

mqtt ミラー: https://hub.docker.com/_/eclipse-mosquitto

添付

ポートが指定されていない場合は、次のプロンプトが表示されます。

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

接続ログ:

1679721710: New connection from 192.168.28.11:62840 on port 1883.
1679721710: New client connected from 192.168.28.11:62840 as mqttx_5607984c (p5, c1, k60, u'latelee').
1679721767: New connection from 192.168.28.11:62868 on port 1883.
1679721767: New client connected from 192.168.28.11:62868 as mqttx_67e55882 (p5, c1, k60, u'latelee').

このツールを使用してMQTTXメッセージを送信する場合は、「#」などのワイルドカード文字を使用せずに正しいトピックを入力する必要があります。
ここに画像の説明を挿入します

Supongo que te gusta

Origin blog.csdn.net/subfate/article/details/129786435
Recomendado
Clasificación