• docker常用中间件安装


    1、前言

    本文将详细介绍使用docker如何安装目前各种常用中间件的安装教程,主要包括:mysql、gitlab、nacos、redis、xxljob、zipkin、sentinel、seata、rocketMQ、jenkins、oracle、zookeeper、kafaka。
    注意:下面的所有操作全部都是基于docker进行的,如果没有安装docker的请看:Linux-CentOS7安装docker

    2、中间件安装

    2.1、mysql

    sudo docker run \
    -d \
    -p 3306:3306 \
    -v /usr/local/mysql/conf:/etc/mysql/conf.d \
    -v /usr/local/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=xiashiman6688# \
    --restart always \
    --name mysql \
    mysql:5.6.47
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.2、gitlab容器

    sudo docker run \
    -itd \
    -p 9980:80 \
    -p 9922:22 \
    -v /usr/local/Gitlab/etc:/etc/gitlab \
    -v /usr/local/Gitlab/log:/var/log/gitlab \
    -v /usr/local/Gitlab/opt:/var/opt/gitlab \
    --restart always \
    --privileged=true \
    --name gitlab \
    gitlab/gitlab-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    2.3、nacos

    docker run \
        --name nacos \
        -d \
        -p 8848:8848 \
        -p 9848:9848 \
        -p 9849:9849 \
        --restart=always \
        -e JVM_XMS=256m \
        -e JVM_XMX=256m \
        -e MODE=standalone \
        -v /usr/local/nacos/logs:/home/nacos/logs \
        -v /usr/local/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
        nacos/nacos-server:v2.1.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.4、redis

    docker run \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=2 \
    -p 6379:6379 \
    --name redis \
    -v /usr/local/redis/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/redis/data:/data \
    -d redis:5.0.7 \
    redis-server /etc/redis/redis.conf \
    --appendonly yes \
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    –restart=always 总是开机启动
    –log是日志方面的
    -p 6379:6379 将6379端口挂载出去
    –name 给这个容器取一个名字
    -v 数据卷挂载
    /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
    /home/redis/myredis/data:/data 这个同上
    -d redis:版本号 表示后台启动哪个版本的redis
    redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
    –appendonly yes 开启redis 持久化
    –requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.5、xxljob

    docker run \
    -e PARAMS="--spring.datasource.url=jdbc:mysql://43.138.106.84:3306/xxl_job_dev?Unicode=true&characterEncoding=UTF-8 \
    --spring.datasource.username=xxljob \
    --spring.datasource.password=xxljob" \
    -p 8080:8080 \
    -v /tmp:/data/applogs \
    --name xxl-job-admin \
    --restart=always \
    -d xuxueli/xxl-job-admin:2.3.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.6、zipkin

    docker run \
    -e PARAMS="--spring.datasource.url=jdbc:mysql://localhost:3306/zipkin?Unicode=true&characterEncoding=UTF-8 \
    --spring.datasource.username=root \
    --spring.datasource.password=123456" \
    -p 9411:9411 \
    --name zipkin \
    --restart=always \
    -d openzipkin/zipkin:2.12.9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.7、sentinel

    docker run \
    --name sentinel \
    --restart=always \
    -p 8858:8858 \
    -v /usr/local/sentinel_home:/home/sentinel_home \
    -d bladex/sentinel-dashboard:1.8.0 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.8、seata

    2.8.1、获取镜像

    docker pull seataio/seata-server

    2.8.2、运行容器并获取配置

    为方便我们对seata配置修改我们需要先运行下seata-server,然后将配置拷贝到宿主机中,完成之后删除之前配置并通过宿主机运行容器。

    docker run \
    -d \
    --restart always  \
    --name  seata-server \
    -p 8091:8091  \
    -v /usr/local/seata:/seata-server \
    seataio/seata-server:1.5.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.9、rockerMQ

    2.9.1、rockerMQ-namesrv

    docker run \
    -d \
    --name rocketmq-namesrv \
    --network rocketmq \
    --restart=always \
    -p 9876:9876 \
    -v /usr/local/rocketmq/namesrv/logs:/root/logs \
    -v /usr/local/rocketmq/namesrv/store:/root/store \
    apache/rocketmq:4.9.3 sh \
    mqnamesrv 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置文件路径: /usr/local/rocketmq/broker/conf/broker.conf

    2.9.2、rockerMQ-broker

    docker run \
    -d \
    --name rocketmq-broker \
    --network rocketmq \
    --restart=always \
    -p 10909:10909 \
    -p 10911:10911 \
    -v /usr/local/rocketmq/broker/logs:/root/logs \
    -v /usr/local/rocketmq/broker/store:/root/store \
    -v /usr/local/rocketmq/broker/conf:/home/rocketmq/rocketmq-4.9.3/conf \
    -e "JAVA_OPT_EXT=-server -Xms256m -Xmx700m" apache/rocketmq:4.9.3 sh mqbroker \
    -c /usr/local/rocketmq/broker/conf/broker.conf 
    
    不指定内存:(-e那行换成如下)
    apache/rocketmq:4.9.3 sh mqbroker 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.9.3、rockerMQ-console

    docker run \
    -d \
    --name rocketmq-console \
    --network rocketmq \
    -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rocketmq-namesrv:9876 \
    -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    -p 8000:8080 \
    --restart=always \
    apacherocketmq/rocketmq-dashboard:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.10、jenkins

    docker run \
    -itd \
    --name jenkins \
    -p 8829:8080 \
    -p 50000:50000 \
    --restart always \
    -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -v /usr/soft/jenkins_home:/var/jenkins_home \
    //-v  /usr/local/maven/apache-maven-3.6.3:/usr/local/maven \
    -v /etc/localtime:/etc/localtime \
    jenkinszh/jenkins-zh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.11、启动Oracle

    docker run \
    -d \
    -p 1521:1521 \
    --name oracle11g \
    registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g \
    -v /usr/local/oracle/product/11.2.0/dbhome_2:/home/oracle/app/oracle/product/11.2.0/dbhome_2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查看容器启动状态: docker ps | grep oracle11g
    进入oracle11g容器进行配置: docker exec -it oracle11g bash
    切换到root用户下进行配置: su root 输入密码: helowin
    编辑profile文件配置ORACLE环境变量: vi /etc/profile ,并添加如下内容, 保存退出后使配置生效 source /etc/profile

    export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
    export ORACLE_SID=helowin
    export PATH=$ORACLE_HOME/bin:$PATH
    
    • 1
    • 2
    • 3

    创建软连接: ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
    切换到oracle 用户: su - oracle
    登录sqlplus并修改sys、system用户密码:

    sqlplus /nolog	# 登录
    conn /as sysdba # 连接
    alter user system identified by system; # 修改system密码为system
    alter user sys identified by sys; # 修改sys密码为sys
    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
    exit;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查看一下oracle实例状态: lsnrctl status
    在这里插入图片描述

    2.12、kafka

    2.12.1、启动kafka容器

    docker run \
    -d \
    --restart=always \
    --log-driver json-file \
    --log-opt max-size=100m \
    --log-opt max-file=2 \
    --name kafka \
    -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=120.53.12.20:2181/kafka \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://120.53.12.20:9092 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    -v /usr/local/kafka/etc/localtime:/etc/localtime \
    wurstmeister/kafka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.12.2、参数说明:

    • -e KAFKA_BROKER_ID=0 :在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
    • -e KAFKA_ZOOKEEPER_CONNECT=192.168.244.132:2181/kafka :配置zookeeper管理kafka的路径172.16.0.13:2181/kafka
    • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.244.132:9092 :把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。
    • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 :配置kafka的监听端口
    • -v /etc/localtime:/etc/localtime :容器时间同步虚拟机的时间

    2.12.3、验证kafka是否可以使用

    1、进入容器:docker exec -it kafka bash
    2、进入 /opt/kafka_2.12-2.3.0/bin/ 目录下:cd /opt/kafka_2.13-2.8.1/bin/
    3、运行kafka生产者发送消息:./kafka-console-producer.sh --broker-list localhost:9092 --topic sun
    4、发送消息: {“datas”:[{“channel”:“”,“metric”:“temperature”,“producer”:“ijinus”,“sn”:“IJA0101-00002245”,“time”:“1543207156000”,“value”:“80”}],“ver”:“1.0”}
    5、打开新窗口,运行kafka消费者接收消息:./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning
    执行完上诉命令后,在生产者窗口中 输入任意内容回车,即可在消费者的窗口查看到消息

    2.12.4、kafka管理平台

    docker pull docker.io/sheepkiller/kafka-manager
    
    
    docker run \
    -it \
    -d \
    --rm \
    -p 9000:9000 \
    -e ZK_HOSTS="120.53.12.20:2181" \
    --net=host \
    sheepkiller/kafka-manager
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    Python获取Pandas列名的几种方法(含代码示例)
    在pandas中使matplotlib动态画子图的两种方法【推荐gridspec】
    【C++笔试强训】第十九天
    AK 9.12 百度Java后端研发B卷 笔试
    首个集成AI的国产操作系统带来了哪些惊喜
    15天获取20万用户,小程序如何做到?
    极智开发 | 讲解 Nginx 特性之三:动静分离
    【C++11】智能指针的使用以及模拟实现(shared_ptr,unique_ptr,auto_ptr,weak_ptr)
    MATLAB小技巧(21)矩阵分析--偏最小二乘回归
    ocr表格识别(四)——文本检测DBnet原理及其实现
  • 原文地址:https://blog.csdn.net/wmj20001225/article/details/132635557