docker部署開(kāi)源MQTT平臺(tái)mosquitto
一、安裝docker
在開(kāi)始之前,確保你的系統(tǒng)上已經(jīng)安裝了Docker。Docker提供了一個(gè)開(kāi)放的平臺(tái),可以在容器中打包、分發(fā)和運(yùn)行應(yīng)用程序。你可以從Docker官方網(wǎng)站下載和安裝適合你操作系統(tǒng)的Docker版本。
二、拉取Mosquitto Docker鏡像
這里我們以阿里云的Ubuntu系統(tǒng)為例。想要在docker中部署MQTT的服務(wù)就得先找好一個(gè)開(kāi)源平臺(tái),像mosquitto、EMQ X Broker 等都是開(kāi)源的MQTT服務(wù),這里我們以搭建mosquitto為例。
拉取mosquitto鏡像:
# 拉取2.0.20版本
docker pull eclipse-mosquitto:2.0.20
#或者 使用下面的方法 比較快
docker pull m.daocloud.io/docker.io/eclipse-mosquitto:2.0.20
#重命名image
docker tag dedeef6b0c07 eclipse-mosquitto:2.0.20
#刪除鏡像
docker rmi m.daocloud.io/docker.io/eclipse-mosquitto:2.0.20
docker rmi docker.m.daocloud.io/eclipse-mosquitto:2.0.20
三、創(chuàng)建mosquitto配置文件
在運(yùn)行容器之前我們需要先創(chuàng)建一個(gè)配置文件,定義mosquitto的日志、配置等文件的存儲(chǔ)路徑,我們?cè)诜?wù)器的根目錄下創(chuàng)建一個(gè)文件夾。
# 創(chuàng)建文件夾
mkdir /mnt/docker-root/mosquitto
mkdir /mnt/docker-root/mosquitto/{config,data,log}
# 進(jìn)入mosquitto文件夾
cd /mnt/docker-root/mosquitto
# 創(chuàng)建配置文件夾、日志文件夾
mkdir /mnt/docker-root/mosquitto/config
mkdir /mnt/docker-root/mosquitto/data
mkdir /mnt/docker-root/mosquitto/log
在config文件夾下編輯配置文件mosquitto.conf,并添加下列配置內(nèi)容;
路徑使用docker 的路徑 不要寫(xiě)自己主機(jī)的路徑
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
listener 9001
port 1883
allow_anonymous true
# 布爾值,用于確定是否允許未提供用戶(hù)名的客戶(hù)端進(jìn)行連接。 # 如果設(shè)置為false,則應(yīng)創(chuàng)建一個(gè)密碼文件(請(qǐng)參閱password_file選項(xiàng))以控制經(jīng)過(guò)身份驗(yàn)證的客戶(hù)端訪(fǎng)問(wèn)。 # 如果未設(shè)置其他安全選項(xiàng),則默認(rèn)為true。 # 如果設(shè)置了password_file或psk_file,或者如果加載了實(shí)現(xiàn)用戶(hù)名/密碼或TLS-PSK檢查的身份驗(yàn)證插件, # 則'allow_anonymous' 默認(rèn)為false。
allow_anonymous true
# 將持久消息數(shù)據(jù)保存到磁盤(pán)(true/false)。這樣可以保存有關(guān)所有消息的信息,包括訂閱,當(dāng)前運(yùn)行中的消息和保留的消息。 # reserved_persistence是此選項(xiàng)的同義詞。
persistence false
四、創(chuàng)建mosquitto容器運(yùn)行
docker run -itd --name mosquitto -p 1883:1883 -p 9001:9001 -v /mnt/docker-root/mosquitto/config:/mosquitto/config -v /mnt/docker-root/mosquitto/data:/mosquitto/data -v /mnt/docker-root/mosquitto/log:/mosquitto/log eclipse-mosquitto:2.0.18
docker run -d --name mosquitto -p 1883:1883 -p 9001:9001 \
-v /mnt/docker-root/mosquitto/config:/mosquitto/config \
-v /mnt/docker-root/mosquitto/data:/mosquitto/data \
-v /mnt/docker-root/mosquitto/log:/mosquitto/log --log-opt max-size=10m --log-opt max-file=3 eclipse-mosquitto:2.0.20
解釋一下這個(gè)命令:
-itd:以交互模式運(yùn)行容器,啟動(dòng)之后在后臺(tái)運(yùn)行,方便查看輸出日志和控制臺(tái)信息。
-p 1883:1883:將宿主機(jī)的1883端口映射到容器內(nèi)的1883端口,以便可以通過(guò)該端口與MQTT代理進(jìn)行通信。
--name 容器名稱(chēng)
-v /mnt/docker-root/mosquitto/config:/mosquitto/config:將本地的mosquitto-config文件夾掛載到容器內(nèi)的/mosquitto/config路徑,用于配置文件的持久化存儲(chǔ)。
-v /mnt/docker-root/mosquitto/data:/mosquitto/data:將本地的mosquitto-data文件夾掛載到容器內(nèi)的/mosquitto/data路徑,用于數(shù)據(jù)的持久化存儲(chǔ)。
-v /mnt/docker-root/mosquitto/log:/mosquitto/log:將本地的mosquitto-log文件夾掛載到容器內(nèi)的/mosquitto/log路徑,用于日志的持久化存儲(chǔ)。
eclipse-mosquitto:指定要運(yùn)行的Mosquitto鏡像。