当前位置:   article > 正文

docker极简安装:nginx、redis、mysql、jenkins、solr、zookeeper、kafka、elasticsearch_kuboard,swager ui,kibana,static job,nacos,mysql,je

kuboard,swager ui,kibana,static job,nacos,mysql,jenkins

一键安装docker

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && \
sudo yum install docker-ce -y && sudo systemctl --now enable docker && sudo docker run --rm hello-world && \
sudo docker system prune -a --force && sudo docker version
  • 1
  • 2
  • 3

省去步骤,直接按顺序复制执行即可


Nginx

  1. 下载并运行nginx_v1.22-alpine
docker pull nginx:1.22-alpine && docker run -d --name nginx nginx:1.22-alpine
  • 1
  1. 创建nginx目录,并将配置文件日志等拷贝至宿主机
cd /data && docker cp nginx:/etc/nginx ./
  • 1
cd nginx && docker cp nginx:/usr/share/nginx/html ./ && docker cp nginx:/var/log/nginx/ ./logs
  • 1
  1. 停止并删除刚刚运行的nginx容器
docker stop nginx && docker rm nginx
  • 1
  1. 按拷贝出来的目录映射进容器并启动
docker run -d --name nginx --restart=on-failure -p 8000-9000:8000-9000 -p 80:80 -p 443:443 \
-v /data/nginx:/etc/nginx -v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/logs:/var/log/nginx nginx:1.22-alpine
  • 1
  • 2
  • 3

–restart=on-failure:异常状态退出时自动重启
-p 8000-9000:8000-9000:映射整个8000~9000端口段到容器中,为将来业务拓展预留



Redis

  1. 下载redis_v6.2.7
docker pull redis:6.2.7-alpine
  • 1
  1. 创建redis目录,并下载redis.conf文件
cd /data && mkdir redis && cd redis && wget https://raw.githubusercontent.com/redis/redis/6.2/redis.conf
  • 1
  1. 修改redis.conf配置,此处示例为非哨兵集群
vim redis.conf

#bind 127.0.0.1 #注释此配置;作用:限制redis只能本机访问
protected-mode no #改为:no;作用:redis保护模式,禁止外网访问
requirepass xxx #作用:redis连接密码,默认是注释的无需密码。建议手动打开设置
appendonly yes #改为yes;ADF持久化,单机建议开启;重启redis时可恢复数据(非必须);正常退出下:修改appendonly.aof文件删除末尾flushall后重启即可;异常奔溃下:修复aof文件:redis-check-aof --fix appendonly.aof后重启即可
appendfsync everysec # 保持默认everysec即可,每1秒持久化一次AOF,单机建议开启(非必须)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 以修改后的redis.conf文件启动redis容器
docker run -d --name redis --restart=on-failure -p 16379:6379 \
-v /data/redis/redis.conf:/etc/redis/redis.conf redis:6.2.7-alpine /etc/redis/redis.conf
  • 1
  • 2

–restart=on-failure:异常状态退出时自动重启
-p 16379:6379:映射宿主机的16379端口到redis容器的6379端口



Mysql

  1. 下载并运行mysql_v8.0.30
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.30
  • 1

-e MYSQL_ROOT_PASSWORD:root用户密码
此处需设置正确,后续步骤将拷贝出配置文件信息含有此密码信息等

  1. 等待mysql启动完成
docker logs -f mysql
  • 1


3. 创建mysql目录,并将配置文件日志数据目录等拷贝至宿主机

cd /data && mkdir mysql && cd mysql && docker stop mysql && \
docker cp mysql:/etc/my.cnf ./ && docker cp mysql:/var/lib/mysql ./data
  • 1
  • 2
  1. 删除刚刚运行的nginx容器
docker rm mysql
  • 1
  1. 按拷贝出来的目录映射进容器并启动
docker run -d --name mysql --restart=on-failure -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql/my.cnf:/etc/my.cnf -v /data/mysql/data:/var/lib/mysql mysql:8.0.30
  • 1
  • 2

-e MYSQL_ROOT_PASSWORD:root用户密码(需与第一步密码一致)
–restart=on-failure:异常状态退出时自动重启
-p 13306:3306:映射宿主机的13306端口到mysql容器的3306端口

允许外网登录root

此功能非必须,按需配置
但是此版本容器看了下是默认允许的,所以如需允许外网登录可跳过下述步骤

  1. 进入mysql容器
docker exec -it mysql bash
  • 1
  1. 连接mysql(回车后输入上述设置的密码)
mysql -uroot -p
  • 1
  1. 查看root用户host地址(如没有%,则需修改为“%”即可)
use mysql;
  • 1
select host, user, authentication_string, plugin from user where user = 'root';
  • 1
update user set host = '%' where user = 'root';
  • 1
  1. 刷新表权限
flush privileges;
  • 1
  1. 退出mysql容器(执行两遍)
exit
  • 1

后续问题1

Navicat无法连接mysql8.0


原因

mysql8 之前的版本中加密规则是 mysql_native_password,而在 mysql8 之后,加密规则是caching_sha2_password
解决问题方法有两种,一种是升级 navicat 驱动;一种是把 mysql 用户登录密码加密规则还原成 mysql_native_password
此文后续步骤以修改mysql加密规则为示例(各位看官按实际需要操作)

  1. 进入mysql容器
docker exec -it mysql bash
  • 1
  1. 连接mysql(回车后输入上述设置的密码)
mysql -uroot -p
  • 1
  1. 修改host为%的root用户密码规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
  • 1
  1. 退出mysql容器(执行两遍)
exit
  • 1

后续问题2

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因

这个错误发生在mysql 5.7 版本及以上版本会出现的问题:
mysql 5.7版本默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。
很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

在sql执行时,出现该原因:
简单来说就是:输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by column,就是group by后面跟着的字段。
由于开启了ONLY_FULL_GROUP_BY的设置,所以如果一个字段没有在target list和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的,会报错误。

MySQL有any_value(field)函数,它主要的作用就是抑制ONLY_FULL_GROUP_BY值被拒绝。
这样sql语句不管是在ONLY_FULL_GROUP_BY模式关闭状态还是在开启模式都可以正常执行,不被mysql拒绝。
any_value()会选择被分到同一组的数据里第一条数据的指定列值作为返回数据。

  1. 修改my.cnf文件
vim /data/mysql/my.cnf
  • 1
# 在[mysqld]下追加以下内容
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  • 1
  • 2
  1. 重启mysql容器
docker restart mysql
  • 1
其他小节

创建数据库

CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 1

创建用户

CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
  • 1

用户授权权限

GRANT ALL ON 数据库名.* TO '用户名'@'%';
  • 1


Jenkins

  1. 下载jenkins:alpine-jdk8
docker pull jenkins/jenkins:alpine-jdk8
  • 1

若使用jdk11则可pull最新版jenkins,否则最新版配置jdk8时会有兼容bug

  1. 运行下载的镜像
docker run -d --name jenkins jenkins/jenkins:alpine-jdk8
  • 1
  1. 拷贝jenkins_home到宿主机
docker cp jenkins:/var/jenkins_home /data/
  • 1
  1. 删除刚刚启动的jenkins
docker stop jenkins && docker rm jenkins
  • 1
  1. 重新启动一个映射拷贝出来的home
docker run -d --restart=unless-stopped --name jenkins -u root \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/esp/:/data/esp/ \
-v /data/jenkins_home:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-p 9095:8080 -p 50000:50000 jenkins/jenkins:alpine-jdk8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

-uroot:已jenkins中root用户启动
-p:映射容器中8080、50000端口到宿主机的9095、50000端口
-v:映射项目部署目录及jenkins工作目录到容器中
-v /etc/localtime:/etc/localtime:同步容器与宿主机的时间

  1. 查看jenkins密码
docker logs -f jenkins
  • 1
*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

------------此处应有密码------------

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 初始化jenkins
    访问:http://ip:9095

输入上文log中的密码点击继续即可,后续的个性化设置按需配置,此处只提供安装步骤


Zookeeper

  1. 下载并运行zookeeper_v3.8.0
docker run -d --name zookeeper zookeeper:3.8.0
  • 1
  1. 创建zookeeper目录,并将配置文件拷贝至宿主机
mkdir /data/zookeeper && cd /data/zookeeper
  • 1
docker cp zookeeper:/conf/zoo.cfg ./ && docker cp zookeeper:/data ./ \
&& docker cp zookeeper:/datalog ./ && docker rm -f zookeeper
  • 1
  • 2
  1. 按拷贝出来的目录映射进容器并启动
docker run -d --name zookeeper --restart=on-failure -p 2181:2181 \
-v /data/zookeeper/data:/data -v /data/zookeeper/datalog:/datalog \
-v /data/zookeeper/zoo.cfg:/conf/zoo.cfg zookeeper:3.8.0
  • 1
  • 2
  • 3

–restart=on-failure:异常状态退出时自动重启


Kafka

  1. 下载及运行kafka_v3.3.1
docker run -d --name kafka -e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 --link zookeeper bitnami/kafka:3.3.1
  • 1
  • 2
  • 3

KAFKA_CFG_ADVERTISED_LISTENERS暴露的ip端口,生产填内网ip;测试填公网ip
KAFKA_CFG_ZOOKEEPER_CONNECTzookeeper连接ip端口

  1. 创建kafka目录,并将配置文件日志等拷贝至宿主机
mkdir /data/kafka && cd /data/kafka
  • 1
docker cp kafka:/opt/bitnami/kafka/config ./ \ 
docker cp kafka:/opt/bitnami/kafka/bin ./ && docker rm -f kafka
  • 1
  • 2
  1. 修改kafka启动脚本,增加jmx端口
vim bin/kafka-server-start.sh
  • 1
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    # 插入如下内容:↓
    export JMX_PORT="9999"
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 重新启动kafka
docker run -d --name kafka -p 9092:9092 -p 9999:9999 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \ 
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_CFG_MAX_REQUEST_SIZE=104857600 --link zookeeper \
-v /data/kafka/bin:/opt/bitnami/kafka/bin \
-v /data/kafka/config:/opt/bitnami/kafka/config bitnami/kafka:3.3.1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
安装Kafka-eagle
  1. 下载并运行Kafka-eagle_v2.0.3
docker run -d --name kafka-eagle rottenleaf/kafka-eagle:2.0.3
  • 1
  1. 创建Kafka-eagle目录,并将配置文件日志等拷贝至宿主机
mkdir /data/kafka-eagle && cd /data/kafka-eagle
  • 1
docker cp kafka-eagle:/kafka-eagle/conf/system-config.properties ./ \
&& docker cp kafka-eagle:/kafka-eagle/logs ./ && docker rm -f kafka-eagle
  • 1
  • 2
  1. 修改配置信息
vim system-config.properties
  • 1
efak.zk.cluster.alias=cluster1
cluster1.zk.list=localhost:2181
# zookeeper客户端线程数,即zkCli个数
kafka.zk.limit.size=25
# web界面端口
efak.webui.port=8048
# 使用mysql:mysql8:com.mysql.cj.jdbc.Driver
efak.driver=com.mysql.jdbc.Driver
efak.url=jdbc:mysql://127.0.0.1:3306/kafka_eagle?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=123456
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 以拷贝出来的配置文件重新启动kafka-eagle
docker run -d --name kafka-eagle -p 8048:8048 --link zookeeper \
-v /data/kafka-eagle/system-config.properties:/kafka-eagle/conf/system-config.properties \
-v /data/kafka-eagle/logs:/kafka-eagle/logs rottenleaf/kafka-eagle:2.0.3
  • 1
  • 2
  • 3

Elasticsearch

调整内核参数,否则无法启动

查看内核max_map_count参数值,默认为65530
cat /proc/sys/vm/max_map_count
重新设置max_map_count的值
sysctl -w vm.max_map_count=262144
立即生效
sysctl -p

  1. 下载并运行elasticsearch_v7.17.7
docker pull elasticsearch:7.17.7 && docker run -d --name es -e "discovery.type=single-node" elasticsearch:7.17.7
  • 1
  1. 创建elasticsearch目录,并将插件及数据目录拷贝至宿主机
mkdir /data/elasticsearch && cd /data/elasticsearch
  • 1
docker cp es:/usr/share/elasticsearch/config ./ && docker cp es:/usr/share/elasticsearch/data ./ && docker cp es:/usr/share/elasticsearch/plugins ./
  • 1
  1. 停止并删除刚刚运行的elasticsearch容器
docker stop es && docker rm es
  • 1
  1. 按拷贝出来的目录映射进容器并启动
docker run -d --name es --restart=on-failure \
-p 9200:9200 -p 9300:9300  -e "discovery.type=single-node" \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/config:/usr/share/elasticsearch/config \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.17.7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

--restart=on-failure:异常状态退出时自动重启
-e "discovery.type=single-node":以单机节点启动

访问:http://ip:9200

{
  "name" : "58fb806ed441",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "bdMTiJNsQPmv0pgVoAYu1Q",
  "version" : {
    "number" : "7.17.7",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "78dcaaa8cee33438b91eca7f5c7f56a70fec9e80",
    "build_date" : "2022-10-17T15:29:54.167373105Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  1. 修改配置文件(非必须,但建议修改,否则有被挖矿风险)
vim config/elasticsearch.yml
  • 1
http.cors.enabled: true
http.cors.allow-origin: "*"
# 开启安全验证
xpack.security.enabled: true
  • 1
  • 2
  • 3
  • 4

重启es生效配置

docker restart es
  • 1

生成随机密码

docker exec -it es elasticsearch-setup-passwords auto
  • 1

修改密码

curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
  • 1
安装IK分词器
  1. 下载并安装ik分词器
docker exec -it es elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip
  • 1

若安装成功则会打印以下内容

-> Installing https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip
-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip
[=================================================] 100%?? 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed analysis-ik
-> Please restart Elasticsearch to activate any plugins installed
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 重启es生效
docker restart es
  • 1
安装Kibana
  1. 下载并运行Kibana_v7.17.7
docker run -d --name kibana --link es -e ELASTICSEARCH_URL=http://es:9200 kibana:7.17.7
  • 1
  1. 创建kibana目录,并将配置文件日志等拷贝至宿主机
mkdir /data/kibana && cd /data/kibana
  • 1
docker cp kibana:/usr/share/kibana/config ./ && docker rm -f kibana
  • 1
  1. 修改配置信息
vim config/kibana.yml
  • 1
# elasticsearch连接地址
elasticsearch.hosts: [ "http://es:9200" ]
# elasticsearch账密(若无可不配置)
elasticsearch.username: "kibana"
elasticsearch.password: "密码为上述es生成随机密码对应的kibana_password"
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 以拷贝出来的配置文件重新启动kafka
docker run -d --name kibana --link es -p 15601:5601 \
-v /data/kibana/config:/usr/share/kibana/config kibana:7.17.7
  • 1
  • 2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/425103
推荐阅读
相关标签
  

闽ICP备14008679号