第一步:準備三臺機器
第二步:在網上拉取鏡像 docker pull eclipse-mosquitto
第三步:在主機器上的/opt/mosquittoconf/ 下建立 mosquitto.conf
放入
connection mytest1
address 從機器1ip地址:1883
topic room1/# both 2 sensor/ myhouse/
connection mytest2
address 從機器2ip地址:1883
topic room1/# both 2 sensor/ myhouse/
bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true
start_type automatic
解釋:
connection 連接名稱,可以隨便取
address 連接的另外服務器地址和端口號,如果有多臺服務器,可以寫多個address
topic 主題名稱,“#”爲通配符,表示發佈端可以在room1/後面接任何文字
both 服務質量,2代表只有一次(可以查看第一篇博文對MQTT的詳細介紹)
sensor/ 本地前綴標識,可以隨便命名
myhouse/ 遠程前綴標識,可以隨便命名
bridge_protocol_version mqttv311 橋連接協議版本MQTT3.11
notifications 是否發佈橋接的狀態信息
cleansession 橋接斷開時,是否清除遠程服務器中的消息
start_type 橋接模式,目前有三種:automatic、lazy、once
設置好之後保存退出。
第四步:繼續創建 config.mk
內容參考 https://github.com/eclipse/mosquitto/blob/master/config.mk
找到WITH_BRIDGE:=yes 將簽名的“#”號去掉開啓橋連接模式。(默認是開啓的,爲了無誤查看一下)
第五步:然後在兩個從機器上啓動
docker run -d --name mytest12 -p 1883:1883 -p 9001:9001 eclipse-mosquitto
第六步:然後再啓動主機器上的
docker run -d --name mqtttest -p 1883:1883 -p 9001:9001 -v /opt/mosquittoconf/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /opt/mosquittoconf/config.mk:/mosquitto/config/config.mk eclipse-mosquitto
第七步:進入容器查看
docker exec -it 容器名 /bin/sh