Docker安装

简介: Docker安装

普通运行

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


docker-compose 运行

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


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


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


本地开发环境

version: '3.8'
services:
  emqx:
    image: emqx/emqx:5.0.10
    container_name: emqx
    restart: always
    network_mode: host
    pid: host
    volumes:
      - emqx-data:/opt/emqx/data
      - emqx-etc:/opt/emqx/etc
      - 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鉴权缓存
      # dashboard 配置
      EMQX_DASHBOARD__DEFAULT_USERNAME: admin
      EMQX_DASHBOARD__DEFAULT_PASSWORD: 123qwe
      EMQX_DASHBOARD__I18N_LANG: zh
      # 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"}'
volumes:
  emqx-data:
  emqx-etc:
  emqx-log:点击复制复制失败已复制


线上部署环境

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


docker-compose 创建简单的 static 集群

创建 docker-compose.yaml 文件

version: '3'
services:
  emqx1:
    image: emqx/emqx:5.0.10
    container_name: emqx1
    environment:
    - "EMQX_NODE_NAME=emqx@node1.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=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:5.0.10
    environment:
    - "EMQX_NODE_NAME=emqx@node2.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=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 up -d点击复制复制失败已复制


查看集群:

$ docker exec -it emqx1 sh -c "emqx_ctl cluster status"
Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'],
                  stopped_nodes => []}
目录
相关文章
|
12天前
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
127 64
|
1天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
33 14
|
13天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
86 24
|
14天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
77 24
|
13天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
182 11
|
2月前
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
1630 3
【最新版正确姿势】Docker安装教程(简单几步即可完成)
|
2月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
976 12
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
3月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
676 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
2月前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
111 2
|
3月前
|
监控 虚拟化 Docker
Window系统安装Docker
这篇文章提供了在Windows系统上安装与配置Docker的详细指南,包括Docker Desktop的安装及通过Docker来运行容器化应用的步骤。
171 1
Window系统安装Docker

热门文章

最新文章