Docker安装

简介: Docker安装

普通运行

$ docker pull emqx/emqx
$ docker run -d --name emqx --restart always -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx点击复制复制失败已复制


docker-compose 运行

通过 Docker Compose 来运行的时候有两种场景,一种是线上部署的时候,一种是本地开发的时候,这两种在使用的时候配置是不同的。、


线上部署的时候一般 docker compose 中所有的服务都处在同一个容器网络下,仅仅是和宿主机之间通过暴露端口进行通信。


而在开发的时候,我们会进行一系列的配置,例如配置一下http鉴权等,这个时候需要 emqx 与本地开发环境处在同一个网络下,因此需要单独配置其网络环境


本地开发环境

version: '3.8'
volumes:
  vol-emqx-data:
    name: emqx-data
  vol-emqx-etc:
    name: emqx-etc
  vol-emqx-log:
    name: emqx-log
services:
  emqx:
    image: emqx/emqx:4.3.4
    container_name: emqx
    restart: always
    network_mode: host
    pid: host
    volumes:
      - vol-emqx-data:/opt/emqx/data
      - vol-emqx-etc:/opt/emqx/etc
      - vol-emqx-log:/opt/emqx/log
      - /etc/localtime:/etc/localtime:ro
    environment:
      EMQX_ALLOW_ANONYMOUS: 'false' # 禁止匿名连接
      EMQX_ACL_NOMATCH: deny  # ACL未命中时,拒绝 发布/订阅 操作
      EMQX_ENABLE_ACL_CACHE: 'off'  # 关闭ACL鉴权缓存
      # http auth 插件配置
      EMQX_AUTH__HTTP__AUTH_REQ__URL: http://127.0.0.1:3000/emqx/auth
      EMQX_AUTH__HTTP__AUTH_REQ__METHOD: post
      EMQX_AUTH__HTTP__AUTH_REQ__CONTENT_TYPE: json
      EMQX_AUTH__HTTP__AUTH_REQ__PARAMS: client_id=%c,username=%u,password=%P,ip_address=%a,protocol=%r
      EMQX_AUTH__HTTP__SUPER_REQ__URL: http://127.0.0.1:3000/emqx/superuser
      EMQX_AUTH__HTTP__SUPER_REQ__METHOD: post
      EMQX_AUTH__HTTP__SUPER_REQ__CONTENT_TYPE: json
      EMQX_AUTH__HTTP__SUPER_REQ__PARAMS: client_id=%c,username=%u
      EMQX_AUTH__HTTP__ACL_REQ__URL: http://127.0.0.1:3000/emqx/acl
      EMQX_AUTH__HTTP__ACL_REQ__METHOD: get
      EMQX_AUTH__HTTP__ACL_REQ__CONTENT_TYPE: json
      EMQX_AUTH__HTTP__ACL_REQ__PARAMS: access=%A,username=%u,client_id=%c,ip_address=%a,topic=%t,mount_point=%m,protocol=%r
      # webhook 插件配置
      EMQX_WEB__HOOK__URL: http://127.0.0.1:3000/emqx/webhook
      EMQX_WEB__HOOK__HEADERS__CONTENT-TYPE: application/json
      EMQX_WEB__HOOK__HEADERS__ACCEPT: '*/*'
      EMQX_WEB__HOOK__RULE__CLIENT__CONNECT__1: '{"action": "on_client_connect"}'
      EMQX_WEB__HOOK__RULE__CLIENT__CONNACK__1: '{"action": "on_client_connack"}'
      EMQX_WEB__HOOK__RULE__CLIENT__CONNECTED__1: '{"action": "on_client_connected"}'
      EMQX_WEB__HOOK__RULE__CLIENT__DISCONNECTED__1: '{"action": "on_client_disconnected"}'
      EMQX_WEB__HOOK__RULE__CLIENT__SUBSCRIBE__1: '{"action": "on_client_subscribe"}'
      EMQX_WEB__HOOK__RULE__CLIENT__UNSUBSCRIBE__1: '{"action": "on_client_unsubscribe"}'
      EMQX_WEB__HOOK__RULE__SESSION__SUBSCRIBE__1: '{"action": "on_session_subscribed"}'
      EMQX_WEB__HOOK__RULE__SESSION__UNSUBSCRIBE__1: '{"action": "on_session_unsubscribed"}'
      EMQX_WEB__HOOK__RULE__SESSION__TERMINATED__1: '{"action": "on_session_terminated"}'
      EMQX_WEB__HOOK__RULE__MESSAGE__PUBLISH__1: '{"action": "on_message_publish"}'
      EMQX_WEB__HOOK__RULE__MESSAGE__DELIVERED__1: '{"action": "on_message_delivered"}'
      EMQX_WEB__HOOK__RULE__MESSAGE__ACKED__1: '{"action": "on_message_acked"}'点击复制复制失败已复制


线上部署环境

version: '3.8'
volumes:
  vol-emqx-data:
    name: emqx-data
  vol-emqx-etc:
    name: emqx-etc
  vol-emqx-log:
    name: emqx-log
services:
  emqx:
    image: emqx/emqx:4.3.4
    container_name: emqx
    hostname: emqx
    restart: always
    ports:
      - 1883:1883
      - 18083:18083
      - 11883:11883
    volumes:
      - vol-emqx-data:/opt/emqx/data
      - vol-emqx-etc:/opt/emqx/etc
      - vol-emqx-log:/opt/emqx/log
      - /etc/localtime:/etc/localtime:ro
    # environment:
    #   EMQX_NAME: emqx
    #   EMQX_HOST: 127.0.0.1点击复制复制失败已复制


docker-compose 创建简单的 static 集群

创建 docker-compose.yaml 文件

version: '3'
services:
  emqx1:
    image: emqx/emqx:v4.0.0
    environment:
      - "EMQX_NAME=emqx"
      - "EMQX_HOST=node1.emqx.io"
      - "EMQX_CLUSTER__DISCOVERY=static"
      - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node1.emqx.io
  emqx2:
    image: emqx/emqx:v4.0.0
    environment:
      - "EMQX_NAME=emqx"
      - "EMQX_HOST=node2.emqx.io"
      - "EMQX_CLUSTER__DISCOVERY=static"
      - "EMQX_CLUSTER__STATIC__SEEDS=emqx@node1.emqx.io, emqx@node2.emqx.io"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node2.emqx.io
networks:
  emqx-bridge:
    driver: bridge点击复制复制失败已复制


启动 docker-compose 集群

$ docker-compose -p my_emqx up -d点击复制复制失败已复制


查看集群

$ docker exec -it my_emqx_emqx1_1 sh -c "emqx_ctl cluster status"
Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'],
                  stopped_nodes => []}
目录
相关文章
|
5月前
|
存储 安全 C++
Odoo 安装方式选择:源码安装 vs Docker
Odoo部署常采用源码编译或Docker容器化,但分别面临依赖复杂、版本风险和服务化难题,以及镜像臃肿和扩展受限的问题。Websoft9提出混合方案,融合两者优势:通过智能环境适配、三阶段部署流程(环境预检、混合模式选择、持久化配置)及声明式YAML配置,实现高效、灵活的双模运行时。此方案显著降低依赖冲突解决时间(从83分钟至0),生产环境构建耗时缩短至8分钟,并达100% CVE漏洞修复率,适合ERP定制开发与规模化部署的企业需求。
|
3月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
348 4
|
3月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
118 1
|
4月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
281 5
|
4月前
|
存储 弹性计算 Linux
安装Docker
常见操作系统安装docker步骤
529 15
|
4月前
|
Docker 容器
在openEuler 22.03 LTS上安装Docker CE和Docker Compose
以上就是在openEuler 22.03 LTS上安装Docker CE和Docker Compose的过程。希望这个指南能帮助你顺利完成安装。
945 12
|
5月前
|
Linux 虚拟化 Docker
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天
|
5月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana(docker安装)
本文档详细介绍了如何使用Docker容器快速部署Prometheus监控系统和Grafana数据可视化平台。该方案适用于需要快速搭建监控环境的开发测试场景,具备部署简单、资源占用低、易于维护等特点。