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:
version: "3"
services:
emqx:
container_name: emqx
image: emqx/emqx:v4.0.0
networks:
cloud:
aliases:
- emqx
environment:
- EMQX_NAME=mqtt
- EMQX_HOST=10.20.30.40
ports:
- "1883:1883"
networks:
cloud:
external: true
启动容器成功后,需要将容器里的相应文件夹拷贝到持久化的位置上:
docker cp emqx:/opt/emqx/etc ~/emqx/etc
docker cp emqx:/opt/emqx/lib ~/emqx/lib
docker cp emqx:/opt/emqx/data ~/emqx/data
docker cp emqx:/opt/emqx/log ~/emqx/log
然后更改这几个文件夹的Owner、Group、权限:
cd ~/emqx
chown -R 1000:1000 data etc lib log
chmod -R 775 data etc lib log
修改docker-compose.yml,添加volume映射:
volumes:
- $HOME/emqx/lib:/opt/emqx/lib
- $HOME/emqx/etc:/opt/emqx/etc
- $HOME/emqx/data:/opt/emqx/data
- $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 端口 |