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: emqximage: emqx/emqx:v4.0.0networks:cloud:aliases:- emqxenvironment:- EMQX_NAME=mqtt- EMQX_HOST=10.20.30.40ports:- "1883:1883"networks:cloud:external: true
启动容器成功后,需要将容器里的相应文件夹拷贝到持久化的位置上:
docker cp emqx:/opt/emqx/etc ~/emqx/etcdocker cp emqx:/opt/emqx/lib ~/emqx/libdocker cp emqx:/opt/emqx/data ~/emqx/datadocker cp emqx:/opt/emqx/log ~/emqx/log
然后更改这几个文件夹的Owner、Group、权限:
cd ~/emqxchown -R 1000:1000 data etc lib logchmod -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 端口 |

浙公网安备 33010602011771号