EMQ X 是一个开源的、高度可扩展的、跨平台的MQTT代理,用于处理来自物联网、移动应用程序和分布式系统的数据。要使用Docker搭建emqx,你需要首先从Docker Hub拉取emqx的官方镜像,然后可以通过Docker CLI命令或Docker Compose来运行这个容器。
使用 Docker CLI 搭建 emqx
拉取 EMQ X 镜像:
docker pull emqx/emqx:5.5.0
运行emqx容器:
docker run -d--name emqx \-p1883:1883 -p8083:8083 \-p8084:8084 -p8883:8883 \-p18083:18083 \-v$PWD/data:/opt/emqx/data \-v$PWD/log:/opt/emqx/log \
emqx/emqx:5.5.0
- -d: 表示在后台运行容器。
- –name emqx: 设置容器的名称为emqx。
- -p 1883:1883: 将容器内部的MQTT默认端口1883映射到宿主机的同一端口,用于客户端连接。
- -p 18083:18083: 将容器内部的EMQ X Dashboard管理界面默认端口18083映射到宿主机的同一端口,用于通过网页访问管理界面。 查看容器日志:
docker logs emqx
emqx: 运行中的容器名称。
使用 Docker Compose 搭建 emqx
如果你想要使用Docker Compose来部署emqx,你需要一个docker-compose.yml配置文件。下面是一个简单的例子:
version:'3'services:emqx1:image: emqx:5.5.0
container_name: emqx1
environment:-"[email protected]"-"EMQX_CLUSTER__DISCOVERY_STRATEGY=static"-"EMQX_CLUSTER__STATIC__SEEDS=[[email protected],[email protected]]"healthcheck:test:["CMD","/opt/emqx/bin/emqx ctl","status"]interval: 5s
timeout: 25s
retries:5networks:emqx-bridge:aliases:- node1.emqx.io
ports:- 1883:1883- 8083:8083- 8084:8084- 8883:8883- 18083:18083# volumes:# - $PWD/emqx1_data:/opt/emqx/dataemqx2:image: emqx:5.5.0
container_name: emqx2
environment:-"[email protected]"-"EMQX_CLUSTER__DISCOVERY_STRATEGY=static"-"EMQX_CLUSTER__STATIC__SEEDS=[[email protected],[email protected]]"healthcheck:test:["CMD","/opt/emqx/bin/emqx ctl","status"]interval: 5s
timeout: 25s
retries:5networks:emqx-bridge:aliases:- node2.emqx.io
# volumes:# - $PWD/emqx2_data:/opt/emqx/datanetworks:emqx-bridge:driver: bridge
- version: ‘3’: 指定Docker Compose配置文件的版本号。
- services: 定义要运行的服务集。
- emqx: 这是定义的服务名称。
- image: 使用的EMQ X镜像名称。
- container_name: 指定容器的名称。
- ports: 容器的端口映射列表。
- “1883:1883”: 将容器的1883端口映射到宿主机的1883端口。
- “18083:18083”: 将容器的18083端口映射到宿主机的18083端口。
- restart: 容器的重启策略,always表示如果容器退出,Docker将自动重启它。 使用以下命令来启动服务:
docker-compose up -d
- up: 创建并启动服务。
- -d: 在后台运行服务。 要停止并移除服务及相关网络,可以使用:
docker-compose down
- down: 停止并移除所有由docker-compose.yml文件定义的服务和网络。
版权归原作者 LogicLancer 所有, 如有侵权,请联系我们删除。