docker 安装

1)更新yum包

  1. yum update

2)安装需要的软件包

  1. yum install -y yum-utils device-mapper-persistent-data lvm2

3)设置yum源(阿里仓库)

  1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4)查看远程仓库中所有docker版本

  1. yum list docker-ce --showduplicates | sort -r

5)安装docker

  1. yum install docker-ce-20.10.1-3.el7 #安装指定版本(推荐安装此方式)

获得个人的 docker 加速链接地址,

  1. #创建目录地址
  2. mkdir -p /etc/docker
  3. #创建 daemon 文件
  4. vi /etc/docker/daemon.json

在 daemon.json 文件中添加下面内容:

  1. {
  2. "registry-mirrors": ["自己个人的docker 加速地址"]
  3. }

6)重新启动服务

  1. systemctl daemon-reload
  2. systemctl restart docker

7)启动docker前,一定要关闭防火墙!!

  1. # 关闭
  2. systemctl stop firewalld
  3. # 禁止开机启动防火墙
  4. systemctl disable firewalld

Docker 自动补全

  1. yum install -y bash-completion
  2. source /usr/share/bash-completion/bash_completion
  3. source /usr/share/bash-completion/completions/docker

mginx安装

1)拉取安装包

  1. docker pull nginx:1.14.1

2)创建容器并进行数据卷挂载

  1. docker run --name nginx -v html:/usr/share/nginx/html -p 80:80 -d nginx1.14.1

MySQL安装

1)拉取安装包

  1. docker pull mysql:5.7

2)创建文件夹

  1. mkdir -p /tmp/mysql/data // 存放生成的数据信息
  2. mkdir -p /tmp/mysql/conf // 存放共享的配置文件信息

3)在conf文件夹中放入配置文件

4)创建容器并直接挂载

  1. docker run \
  2. --name mysql \
  3. -e MYSQL_ROOT_PASSWORD=root \
  4. -p 3306:3306 \
  5. -d \
  6. -v /tmp/mysql/data:/var/lib/mysql \
  7. -v /tmp/mysql/conf/:/etc/mysql/conf.d/my.cnf \
  8. --privileged \
  9. mysql:5.7
  1. ## 容器化部署
  2. #拉取镜像并创建启动容器
  3. docker pull mysql:5.7
  4. #详细方式
  5. docker run --name mysql --restart=always -p 3306:3306 --privileged=true -ti -e MYSQL_ROOT_PASSWORD=itcast142 -e MYSQL_USER=user -e MYSQL_PASSWORD=itcast142 -e TZ=Asia/Shanghai -v /usr/soft/mysql/docker/3306/config/:/etc/mysql/conf.d -v /usr/soft/mysql/docker/3306/data/:/var/lib/mysql -v /usr/soft/mysql/docker/3306/logs/:/var/log/mysql -d mysql:5.7
  6. #-e 代表添加环境变量 MYSQL_ROOT_PASSWORD root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其密码为空)
  7. #进入容器
  8. docker exec -it mysql /bin/bash
  9. #登录容器内mysql
  10. mysql -uroot -p
  11. #退出容器
  12. exit
  13. 如果容器创建完容器,但mysql的时区不对,需要通过下面的配置来修改时区:
  14. #进入容器
  15. docker exec -it mysql5.7 bash
  16. #查看当前时区
  17. date -R
  18. #修改时区 方式一:
  19. cp /usr/share/zoneinfo/PRC /etc/localtime
  20. # 或者 方式二:
  21. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

RabbitMQ
拉取包

docker pull rabbitmq:3.8-management

创建容器

docker run \
 -e RABBITMQ_DEFAULT_USER=itcast \
 -e RABBITMQ_DEFAULT_PASS=itcast142 \
 -v mq-plugin:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3.8-management

Nacos安装
拉取

docker pull nacos/nacos-server:1.4.1

容器

docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.4.1

访问:47.101.41.230:8848/nacos

Redis
Jdk
1)创建目录

mkdir /tmp/dockerfile

2)进入目录

cd /tmp/dockerfile

3)创建容器和挂载

elasticsearch安装

1)拉取包

docker pull elasticsearch:7.10.1

2)创建挂载的对应文件夹

mkdir -p /usr/soft/elasticsearch/config
mkdir -p /usr/soft/elasticsearch/data
mkdir -p /usr/soft/elasticsearch/plugins
mkdir -p /usr/soft/elasticsearch/logs

3)配置中配置ip信息

#进入conf目录进行配置
cd //usr/soft/elasticsearch/config
echo "http.host: 0.0.0.0" > /usr/soft/elasticsearch/config/elasticsearch.yml

4)配置文件夹权限

chmod -R 775 /usr/soft/elasticsearch

5)启动容器并配置端口映射与目录映射

docker run -id --name elasticsearch \
    -e "cluster.name=ly-elastic" \
    -e "http.host=0.0.0.0" \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -e http.cors.enabled=true \
    -e http.cors.allow-origin="*" \
    -e http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization \
    -e http.cors.allow-credentials=true \
    -v /usr/soft/elasticsearch/data:/usr/share/elasticsearch/data \
    -v /usr/soft/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /usr/soft/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    -v /usr/soft/elasticsearch/logs:/usr/share/elasticsearch/logs \
    --privileged \
    --hostname elasticsearch \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.10.1

命令解释:

  • -e “cluster.name=es-docker-cluster”:设置集群名称
  • -e “http.host=0.0.0.0”:监听的地址,可以外网访问
  • -e “ES_JAVA_OPTS=-Xms512m -Xmx512m”:内存大小
  • -e “discovery.type=single-node”:非集群模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • —privileged:授予逻辑卷访问权
  • -p 9200:9200:端口映射配置

6)查看日志

docker logs -f elasticsearch

输入地址访问:47.101.41.230:9200

安装Kibana

1)下载Kibana7.10.1镜像

docker pull kibana:7.10.1

2)创建配置文件夹

mkdir -p  /usr/soft/kibana/config
cd /usr/soft/kibana/config

3)创建并修改配置文件 kibana.yml

#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
# 根据自己实际IP修改elasticsearch地址
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://192.168.94.129:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

4)启动容器

docker run -d \
  --name=kibana \
  -p 5601:5601 \
  -v /usr/soft/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
  kibana:7.10.1

其他的es客户端工具:

# Head 插件(了解)
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

输入地址访问:http://ip:5601
image.png

安装分词器插件:

IK分词器

1)进入目录,创建ik

cd /usr/soft/elasticsearch/plugins/
mkdir ik
cd ik/

2)导入离线包

3)解压

yum -y install unzip 
unzip elasticsearch-analysis-ik-7.10.1.zip

4)重启容器

docker restart elasticsearch

扩展词典:

设置不可拆分的词语

方法:
1) 进入cd /usr/soft/elasticsearch/plugins/conf,在IKAnalyzer.cfg.xml文件里面添加ext.dic

cd /usr/soft/elasticsearch/plugins/conf

image.png
2)创建ext.dic文件,把不需要拆分的词语添加进文档即可,重启es

docker restart elasticsearch 
docker restart kibana

结果:
前:
image.png

后:
image.png

添加停用词:

1)IKAnalyzer.cfg.xml配置文件添加stopword.dic
image.png
然后在stopword.dic中添加”选举“两字

重启elasticsearch

docker restart elasticsearch
docker restart kibana

结果:
前:
image.png

后:
image.png

安装拼音分词器

1) 进入cd /usr/soft/elasticsearch/plugins/conf,新建pinyin文件夹

mkdir pinyin
cd pinyin

2)拼音分词器的文件导入本文件夹,并解压

unzip *

Sentinel


#下载Sentinel镜像(使用老师下发的虚拟机,无需下载镜像)
docker pull bladex/sentinel-dashboard:1.8.0

#创建sentinel容器
docker run --name sentinel  -d -p 8858:8858  bladex/sentinel-dashboard:1.8.0

访问:http://47.101.41.230:8858/
账号:sentinel
密码:sentinel

YApi环境部署

MongoDB环境安装

拉取镜像

docker pull mongo:4.4

安装容器

docker run -d \
  --name mongo-yapi \
  -v /usr/soft/mongo/data/:/usr/soft/mongo/data \
  -p 27017:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=anoyi \
  mongo:4.4

YApi环境安装

(1)拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi

(2)创建YApi的工作目录

#创建目录
mkdir -p /usr/soft/yapi/config
#进入到目录中
cd /usr/soft/yapi/config

在此目录中创建yapi的配置文件config.json,内容如下:

vim config.json
{
  "port": "3000",
  "adminAccount": "admin@anoyi.com",
  "timeout":120000,
  "db": {
    "servername": "mongo",
    "DATABASE": "yapi",
    "port": 27017,
    "user": "admin",
    "pass": "anoyi",
    "authSource": "admin"
  }
}

在/usr/soft/yapi/config中执行下面命令来初始化yapi的数据索引库及管理员账号

docker run -it --rm \
  --link mongo-yapi:mongo \
  --entrypoint npm \
  --workdir /yapi/vendors \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  run install-server

初始化后便可以得到yapi的默认账号:账号:“admin@anoyi.com”,密码:”ymfe.org”,在/usr/soft/yapi/config在执行下面命令来创建容器

docker run -d \
  --name yapi \
  --link mongo-yapi:mongo \
  --workdir /yapi/vendors \
  -p 3000:3000 \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  server/app.js

创建好后,便可以通过浏览器访问:http://47.101.41.230:3000

logStash

(1)下载镜像

#注意要与ES版本一致
docker pull logstash:7.10.1

(2)创建容器

#创建logstash本地挂载目录
mkdir -p /etc/logstash
#设置文件写入权限
chown 1000:1000 /etc/logstash/
#docker 创建容器
docker run -d --name logstash --privileged=true -v /etc/logstash/:/etc/logstash/pipeline/ logstash:7.10.1

(3)进入容器

docker exec -it logstash /bin/bash

(4)修改容器内配置文件

#进入config文件
cd config
#更改logstash.yml文件
vi logstash.yml

(5)将logstash.yml内容修改

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://47.101.41.230:9200" ]

(6)退出容器

#退出容器
exit
#重启容器
docker restart logstash

修改核心配置

input {
  jdbc {
      jdbc_connection_string => "jdbc:mysql://47.101.41.230:3306/xc_content?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
      # the user we wish to excute our statement as
      jdbc_user => "root"
      jdbc_password => itcast142
      # the path to our downloaded jdbc driver  
      jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-8.0.11.jar"
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      jdbc_default_timezone =>"Asia/Shanghai"
      #要执行的sql文件 
      #statement_filepath => "/conf/course.sql"
      record_last_run => "true"
      use_column_value => "true"
      tracking_column => "change_date"
      #如果列是时间字段(比如updateTime),一定要指定这个类型为timestamp
      tracking_column_type => "timestamp"
      statement => "select *,0 AS learners,0 AS comment_num from course_pub where is_pub = 0 and change_date > :sql_last_value"
      #定时配置 -- 每个一分钟会采集一次数据
      schedule => "* * * * *"
      last_run_metadata_path => "/etc/logstash/pipeline/course_pub.meta_date"
  }

}
output {
  elasticsearch {
      #ES的ip地址和端口
      hosts => "47.101.41.230:9200"
      #hosts => ["localhost:9200","localhost:9202","localhost:9203"]
      #ES索引库名称
      index => "xc_course"
      document_id => "%{id}"
      template =>"/etc/logstash/pipeline/xc_course_template.json"
      template_name =>"xc_course"
      template_overwrite =>"true"
  }
  stdout {
     #日志输出
      codec => json_lines
  }
}

测试:
修改容器内配置文件

#进入容器
docker exec -it logstash /bin/bash
#进入config文件夹
cd config
#更改pipelines.yml文件
vi pipelines.yml
path.config: "/etc/logstash/pipeline/mysql-es-xc.conf"

退出并且重启文件

#退出容器
exit
#重启容器
docker restart logstash