美文网首页Docker
Docker安装常用服务端软件

Docker安装常用服务端软件

作者: h2coder | 来源:发表于2023-02-05 23:12 被阅读0次

    Docker安装MySQL

    以MySQL8为例,进行安装和配置

    • 拉取镜像
    docker pull mysql
    
    • 创建容器
    docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
    
    • 删除容器

    -f参数:强制删除,即使容器正在运行,如果不加该参数,如果容器正在运行,是无法删除的,必须先docker stop mysql

    # 语法:docker rm -f 容器ID/容器名称
    docker rm -f mysql
    
    • 启动、重启、停止容器
    # 启动
    docker start mysql
    # 重启
    docker restart mysql
    # 停止
    docker stop mysql
    
    • 查看容器的日志

    - f参数:实时查看日志,如果不加该参数,则只看一次当前的日志,日志变化了,不会实时显示

    # 语法:docker logs -f 容器名/容器ID
    docker logs -f mysql
    

    如果出现权限不足,先删除容器,然后使用以下命令启动

    docker run -di --name=mysql -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=root mysql
    
    • 登录问题

    由于MySQL8的加密规则变了,如果使用SQLYong的低版本,会不匹配加密规则,导致登录失败,解决办法:登录容器,修改加密规则

    # 进入MySQL容器
    docker exec -it mysql /bin/bash 
    
    • 登录数据库
    mysql -u root -p root
    
    • 执行以下命令,修改加密规则
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
    
    • 退出MySQL
    exit;
    

    Docker安装Nacos

    以创建Nacos单机版为例,集群参考:https://www.cnblogs.com/FlyAway2013/p/11201250.html

    • 拉取镜像
    docker pull nacos/nacos-server:v2.0.1
    
    • 创建容器

    • MODE=standalone 单机版

    • --restart=always 开机启动

    • -p 8848:8848 映射端口

    • -d 创建一个守护式容器在后台运行

    Nacos的端口:8848,gRPC协议的端口:9848

    docker run --env MODE=standalone --restart=always --name nacos -d -p 8848:8848  -p 9848:9848 nacos/nacos-server
    
    • 访问Nacos控制台

    例如浏览器进入 http://192.168.253.133:8848/nacos,账号:nacos,密码:nacos,即可进入

    Docker安装Redis

    • 拉取镜像
    docker pull redis
    
    • 创建容器
    docker run -d --name redis --restart=always -p 6379:6379 redis
    

    Docker安装Elasticsearch

    以7.4版本的Elasticsearch为例,注意安装的IK分词器版本,要与Elasticsearch的版本一致,否则可能会有问题

    • 拉取镜像
    docker pull elasticsearch:7.4.0
    
    • 创建容器

    9200端口:http端口(推荐使用)

    9300端口:tcp端口 (ES7中不建议使用9300端口)

    docker run -id --name elasticsearch -d -p 9200:9200 -v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" elasticsearch:7.4.0
    
    • 判断是否启动成功,进入9200端口地址,返回You Know,for Search,即为启动成功
    http://192.168.253.133:9200
    
    • 安装IK分词器(中文分词)

    IK分词器:https://github.com/medcl/elasticsearch-analysis-ik

    在GitHub中,下载IK分词器压缩包,并放到Linux的root目录,再通过cp命令拷贝到Elasticsearch的映射目录

    docker cp analysis-ik elasticsearch:/usr/share/elasticsearch/plugins
    
    • 重启Elasticsearch容器
    docker restart elasticsearch
    

    Docker 安装Kibana

    以7.4.0版本的Kibana为例,注意要和Elasticsearch的版本一致,否则可能会有问题

    • 拉取镜像
    docker pull kibana:7.4.0
    
    • 安装容器

    注意Kibana要链接Elasticsearch容器,命令中的ip地址,要改成你的Linux的ip地址

    docker run -d -p 5601:5601 --name=kibana --link elasticsearch -e "ELASTICSEARCH_URL=http://192.168.253.133:9200" kibana:7.4.0
    
    • 启动成功后,访问Kibana,能出现Kibana的后台管理页面即为成功
    http://192.168.253.133:5601/
    

    Docker安装Kafka

    因为Kafka依赖Zookeeper,所以要先用Docker安装Zookeeper,才能安装和使用Kafka

    • 拉取Zookeeper镜像
    docker pull zookeeper
    
    • 安装Zookeeper容器
    docker run -d --name zookeeper -p 2181:2181 -t zookeeper
    
    • 拉取Kafka镜像
    docker pull wurstmeister/kafka
    
    • 安装Kafka容器

    注意:记得修改IPi地址为你的

    docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.253.133 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
    

    Docker安装MongoDB

    • 拉取镜像
    docker pull mongo
    
    • 创建容器
    docker run -di --name mongo -p 27017:27017 -v ~/data/mongodata:/data  mongo
    

    Docker安装Seata

    • 拉取镜像
    docker pull seataio/seata-server:1.4.2
    
    • 配置Seata

    创建Seata配置文件registry.conf,并将该文件上传到Linux的/home/seata目录下

    注意:记得修改IP地址为你的

    registry {
      # tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
      type = "nacos"
    
      nacos {
        # seata tc 服务注册到 nacos的服务名称,可以自定义
        application = "seata-tc-server"
        serverAddr = "192.168.253.133:8848"
        group = "DEFAULT_GROUP"
        namespace = ""
        cluster = "SH"
        username = "nacos"
        password = "nacos"
      }
    }
    
    config {
      # 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
      type = "nacos"
      # 配置nacos地址等信息
      nacos {
        serverAddr = "192.168.253.133:8848"
        namespace = ""
        group = "DEFAULT_GROUP"
        username = "nacos"
        password = "nacos"
        dataId = "seataServer.properties"
      }
    }
    
    • 配置中心进行Seata配置

    以Nacos作为配置中心为例,在Nacos控制台中,新建seataServer.properties配置

    注意:里面配置了Seata需要使用的MySQL数据库,所以数据库数据源url、账号密码都要改成你的

    # 数据存储方式,db代表数据库
    store.mode=db
    store.db.datasource=druid
    store.db.dbType=mysql
    store.db.driverClassName=com.mysql.cj.jdbc.Driver
    store.db.url=jdbc:mysql://192.168.253.133:3306/seata?serverTimezone=Asia/Shanghai&useUnicode=true&rewriteBatchedStatements=true
    store.db.user=root
    store.db.password=root
    store.db.minConn=5
    store.db.maxConn=30
    store.db.globalTable=global_table
    store.db.branchTable=branch_table
    store.db.queryLimit=100
    store.db.lockTable=lock_table
    store.db.maxWait=5000
    # 事务、日志等配置
    server.recovery.committingRetryPeriod=1000
    server.recovery.asynCommittingRetryPeriod=1000
    server.recovery.rollbackingRetryPeriod=1000
    server.recovery.timeoutRetryPeriod=1000
    server.maxCommitRetryTimeout=-1
    server.maxRollbackRetryTimeout=-1
    server.rollbackRetryTimeoutUnlockEnable=false
    server.undo.logSaveDays=7
    server.undo.logDeletePeriod=86400000
    
    # 客户端与服务端传输方式
    transport.serialization=seata
    transport.compressor=none
    # 关闭metrics功能,提高性能
    metrics.enabled=false
    metrics.registryType=compact
    metrics.exporterList=prometheus
    metrics.exporterPrometheusPort=9898
    
    • 配置Seata数据库和表

    MySQL中,创建一个叫seata的数据库,并运行以下sql语句,会生成全局事务表分支事务表全局锁表

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- 分支事务表
    -- ----------------------------
    DROP TABLE IF EXISTS `branch_table`;
    CREATE TABLE `branch_table`  (
      `branch_id` bigint(20) NOT NULL,
      `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `transaction_id` bigint(20) NULL DEFAULT NULL,
      `resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `status` tinyint(4) NULL DEFAULT NULL,
      `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `gmt_create` datetime(6) NULL DEFAULT NULL,
      `gmt_modified` datetime(6) NULL DEFAULT NULL,
      PRIMARY KEY (`branch_id`) USING BTREE,
      INDEX `idx_xid`(`xid`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- 全局事务表
    -- ----------------------------
    DROP TABLE IF EXISTS `global_table`;
    CREATE TABLE `global_table`  (
      `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `transaction_id` bigint(20) NULL DEFAULT NULL,
      `status` tinyint(4) NOT NULL,
      `application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `timeout` int(11) NULL DEFAULT NULL,
      `begin_time` bigint(20) NULL DEFAULT NULL,
      `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `gmt_create` datetime NULL DEFAULT NULL,
      `gmt_modified` datetime NULL DEFAULT NULL,
      PRIMARY KEY (`xid`) USING BTREE,
      INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
      INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Table structure for lock_table
    -- ----------------------------
    DROP TABLE IF EXISTS `lock_table`;
    CREATE TABLE `lock_table`  (
      `row_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `xid` varchar(96) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `transaction_id` bigint(20) NULL DEFAULT NULL,
      `branch_id` bigint(20) NOT NULL,
      `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `table_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `pk` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `gmt_create` datetime NULL DEFAULT NULL,
      `gmt_modified` datetime NULL DEFAULT NULL,
      PRIMARY KEY (`row_key`) USING BTREE,
      INDEX `idx_branch_id`(`branch_id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    • 创建容器

    注意:记得修改IP地址为你的

    docker run -di --name seata \
            -p 8091:8091 \
            -e SEATA_IP=192.168.253.133 \
            -e SEATA_PORT=8091 \
            -e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
            -v /home/seata:/root/seata-config \
            seataio/seata-server:1.4.2
    

    安装Minio

    • 拉取镜像
    # 拉取最新版本
    docker pull minio/minio
    # 拉取指定版本
    docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips
    
    • 安装容器

    设置Minio的登录账号为minio,密码为minio123

    docker run -d -p 9000:9000 -p 50000:50000 --name minio -e "MINIO_ROOT_USER=minio" -e "MINIO_ROOT_PASSWORD=minio123" -v /home/data:/data -v /home/config:/root/.minio minio/minio server --console-address ":50000" /data
    
    • 登录后台管理系统

    Minio的后台管理系统的端口为50000,ip + 端口,输入上面的账号和密码,点击登录,即可进入登录界面

    http://192.168.253.133:50000
    

    安装XXL-Job

    • 拉取镜像
    docker pull xuxueli/xxl-job-admin:2.3.0
    
    • 安装容器

    这里是使用--link,链接docker中的mysql容器,如果不这样做,XXL-Job启动时,会连接不到mysql(需要使用mysql中的xxl-job数据库)

    注意:要修改为你的mysql数据库的账号的密码

    docker run --link mysql:db -e PARAMS="--spring.datasource.url=jdbc:mysql://db:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root" -p 8080:8080 -v /Users/lixiaogang/data/xxl-job:/data/applogs --name xxl-job-admin  -d xuxueli/xxl-job-admin:2.3.0
    
    • mysql中,导入XXL-Job需要的数据库和表
    https://gitee.com/xuxueli0323/xxl-job/blob/master/doc/db/tables_xxl_job.sql
    
    • 登录后台管理系统
    账号:admin
    密码:123456
    

    安装EMQX

    • 拉取镜像
    docker pull emqx/emqx:v4.1.0
    
    • 安装容器

      • 后台管理系统的访问端口:18083
      • 代码客户端的连接端口:1883或8083
    docker run -tid --name emqx -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 8883:8883 -p 8084:8084 -p 18083:18083  emqx/emqx:v4.1.0
    
    • 登录后台管理系统
      • 登录账号:admin
      • 密码:public

    注意:IP地址改成你的

    http://192.168.200.128:18083/#/
    

    相关文章

      网友评论

        本文标题:Docker安装常用服务端软件

        本文链接:https://www.haomeiwen.com/subject/rhwzhdtx.html