EMQX的Docker持久化方法

重启docker EMQX自启动

docker run -d --name emqx --restart always -v /etc/localtime:/etc/localtime -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 -v /data/docker/emqx/bin:/opt/emqx/bin -v /data/docker/emqx/etc:/opt/emqx/etc -v /data/docker/emqx/lib:/opt/emqx/lib -v /data/docker/emqx/data:/opt/emqx/data -v /data/docker/emqx/log:/opt/emqx/log emqx:latest

 

方法一:

Docker部署 EMQX 免费版并配置持久化到宿主机

 

镜像下载

最新版是4.4.4,但是为了安全就不用最新版比较好

docker pull emqx/emqx:4.4.3

创建临时EMQX容器

docker run -d --name emqx \
-p 1883:1883 \
-p 8081:8081 \
-p 8083:8083 \
-p 8084:8084 \
-p 8883:8883 \
-p 18083:18083 \
emqx/emqx:4.4.3

在服务器上创建emqx挂载目录并拷贝到服务器

# 在服务器上创建emqx挂载目录
mkdir -p /data/docker/emqx/{bin,etc,lib,data,log}# 将临时EMQX容器的文件拷贝到服务器
docker cp emqx:/opt/emqx/bin /data/docker/emqx
docker cp emqx:/opt/emqx/etc /data/docker/emqx
docker cp emqx:/opt/emqx/lib /data/docker/emqx
docker cp emqx:/opt/emqx/data /data/docker/emqx
docker cp emqx:/opt/emqx/log /data/docker/emqx
# 修改挂载目录权限
chown -R 1000:1000/data/docker/emqx/
chmod -R 755/data/docker/emqx/

删除临时emqx容器,重新启动一个EMQX

删除临时emqx容器

docker rm -f emqx

重新启动一个EMQX

docker run -d --name emqx \
-p 1883:1883 \
-p 8081:8081 \
-p 8083:8083 \
-p 8084:8084 \
-p 8883:8883 \
-p 18083:18083 \
-v /data/docker/emqx/bin:/opt/emqx/bin \
-v /data/docker/emqx/etc:/opt/emqx/etc \
-v /data/docker/emqx/lib:/opt/emqx/lib \
-v /data/docker/emqx/data:/opt/emqx/data \
-v /data/docker/emqx/log:/opt/emqx/log \
emqx/emqx:4.4.3

目录结构说明

描述使用 ZIP 压缩包安装
可执行文件目录 /opt/emqx/bin
数据文件 /opt/emqx/data
配置文件目录 /opt/emqx/etc
依赖项目录 /opt/emqx/lib
日志文件 /opt/emqx/log

具体参考:https://www.emqx.io/docs/zh/v4.4/getting-started/directory.html#bin-%E7%9B%AE%E5%BD%95

EMQX 默认开启的 MQTT 服务 TCP 端口

 

端口说明
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8084 MQTT/WebSocket/SSL 端口
8081 管理 API 端口
18083 Dashboard 端口

方法二:

首先,使用不带volume的yml配置文件,必须设置NODE_NAME和NODE_HOST环境变量,用来保持EMQX的唯一性。下面是docker-compose.yml:

  1. version: "3"
  2. services:
  3. emqx:
  4. container_name: emqx
  5. image: emqx/emqx:v4.0.0
  6. networks:
  7. cloud:
  8. aliases:
  9. - emqx
  10. environment:
  11. - EMQX_NAME=mqtt
  12. - EMQX_HOST=10.20.30.40
  13. ports:
  14. - "1883:1883"
  15. networks:
  16. cloud:
  17. external: true

启动容器成功后,需要将容器里的相应文件夹拷贝到持久化的位置上:

  1. docker cp emqx:/opt/emqx/etc ~/emqx/etc
  2. docker cp emqx:/opt/emqx/lib ~/emqx/lib
  3. docker cp emqx:/opt/emqx/data ~/emqx/data
  4. docker cp emqx:/opt/emqx/log ~/emqx/log

然后更改这几个文件夹的Owner、Group、权限:

  1. cd ~/emqx
  2. chown -R 1000:1000 data etc lib log
  3. chmod -R 775 data etc lib log

修改docker-compose.yml,添加volume映射:

  1. volumes:
  2. - $HOME/emqx/lib:/opt/emqx/lib
  3. - $HOME/emqx/etc:/opt/emqx/etc
  4. - $HOME/emqx/data:/opt/emqx/data
  5. - $HOME/emqx/log:/opt/emqx/log

移除旧的容器,重新创建一个容器即可。

 

 

 

Docker部署 EMQX 免费版并配置持久化到宿主机

镜像下载

最新版是4.4.4,但是为了安全就不用最新版比较好

docker pull emqx/emqx:4.4.3

创建临时EMQX容器

docker run -d --name emqx \
-p 1883:1883 \
-p 8081:8081 \
-p 8083:8083 \
-p 8084:8084 \
-p 8883:8883 \
-p 18083:18083 \
emqx/emqx:4.4.3

在服务器上创建emqx挂载目录并拷贝到服务器

# 在服务器上创建emqx挂载目录
mkdir -p /data/docker/emqx/{bin,etc,lib,data,log}# 将临时EMQX容器的文件拷贝到服务器
docker cp emqx:/opt/emqx/bin /data/docker/emqx
docker cp emqx:/opt/emqx/etc /data/docker/emqx
docker cp emqx:/opt/emqx/lib /data/docker/emqx
docker cp emqx:/opt/emqx/data /data/docker/emqx
docker cp emqx:/opt/emqx/log /data/docker/emqx
# 修改挂载目录权限
chown -R 1000:1000/data/docker/emqx/
chmod -R 755/data/docker/emqx/

删除临时emqx容器,重新启动一个EMQX

删除临时emqx容器

docker rm -f emqx

重新启动一个EMQX

docker run -d --name emqx \
-p 1883:1883 \
-p 8081:8081 \
-p 8083:8083 \
-p 8084:8084 \
-p 8883:8883 \
-p 18083:18083 \
-v /data/docker/emqx/bin:/opt/emqx/bin \
-v /data/docker/emqx/etc:/opt/emqx/etc \
-v /data/docker/emqx/lib:/opt/emqx/lib \
-v /data/docker/emqx/data:/opt/emqx/data \
-v /data/docker/emqx/log:/opt/emqx/log \
emqx/emqx:4.4.3

目录结构说明

描述使用 ZIP 压缩包安装
可执行文件目录 /opt/emqx/bin
数据文件 /opt/emqx/data
配置文件目录 /opt/emqx/etc
依赖项目录 /opt/emqx/lib
日志文件 /opt/emqx/log

具体参考:https://www.emqx.io/docs/zh/v4.4/getting-started/directory.html#bin-%E7%9B%AE%E5%BD%95

EMQX 默认开启的 MQTT 服务 TCP 端口

端口说明
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8084 MQTT/WebSocket/SSL 端口
8081 管理 API 端口
18083 Dashboard 端口
posted @ 2023-04-04 20:43  chenlife  阅读(912)  评论(0编辑  收藏  举报