1. 安装mysql

  1. 到docker hub上搜索mysql镜像,查看镜像的信息

  2. 拉取mysql镜像到本地

    • docker pull mysql:tag (tag不加默认最新版本)
  3. 运行mysql服务

    • 在启动mysql的时候,不能直接使用run直接启动

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      [root@localhost ~]# docker run -d --name mysql -p 3307:3306 mysql:5.7.33
      78edf58974fa8ff51d495e47a2b4fe74c06927d99a6df3d191a9d6491529561a
      [root@localhost ~]# docker ps
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      [root@localhost ~]# docker ps -a
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      78edf58974fa mysql:5.7.33 "docker-entrypoint.s…" 30 seconds ago Exited (1) 29 seconds ago mysql
      [root@localhost ~]# docker logs -f 78edf58974fa
      2021-02-10 15:50:55+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.33-1debian10 started.
      2021-02-10 15:50:55+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
      2021-02-10 15:50:55+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.33-1debian10 started.
      2021-02-10 15:50:55+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
      You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
  • 没有暴露外部端口外部不能连接:docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:tag

    • -e MYSQL_ROOT_PASSWORD=root 代表给root用户指定密码
  • 没有暴露外部端口:docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:tag

    1
    2
    3
    4
    5
    [root@localhost ~]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7.33
    969cafcd737bdafd3d59d9a55db71757d4a1dec32915aac7c1d2f756585c3bb0
    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    969cafcd737b mysql:5.7.33 "docker-entrypoint.s…" 3 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
  • 这时我们看到,mysql服务已经成功启动了,这时我们使用mysql连接工具连接便可以使用mysql了

    image-20210212144752700

  1. 进入mysql容器

    • docker exec -it 容器名称|容器id bash
  2. 外部查看mysql日志

    • docker logs 容器名称|容器id
  3. 使用自定义配置参数

    • docker run -d --name mysql -v /root/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root mysql:tag

      • /etc/mysql/conf.d or /etc/mysql/mysql.conf.d容器中mysql自定义配置文件存放,需要进入容器确认是具体哪个文件
      • -v 定义数据卷配置与容器中配置文件映射
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      [root@localhost ~]# docker ps
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      2d27fbf87ce4 mysql:5.7.33 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
      [root@localhost ~]# docker exec -it 2d27fbf87ce4 bash
      root@2d27fbf87ce4:/# ls
      bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
      boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
      root@2d27fbf87ce4:/# cd /etc/mysql/
      root@2d27fbf87ce4:/etc/mysql# ls
      conf.d my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
  1. 将容器数据位置与宿主机位置挂载保证数据安全

    • docker run -d --name mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:tag
      • -v /root/mysql/data 将宿主机的绝对路径挂载到容器内存放数据目录/var/lib/mysql
    • docker run -d --name mysql -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:tag
      • -v mysqldata自动创建名为mysqldata数据卷并挂载容器内存放数据目录/var/lib/mysql
      • -v mysqlconfig自动创建名为mysqlconfig数据卷并挂载容器内配置文件目录/etc/mysql(该目录下全部内容)
    • 注意:在docker hub查看mysql描述信息得知mysql存储数据文件目录放置在容器这个目录/var/lib/mysql
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [root@localhost ~]# docker run -d --name mysql -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7.33
    91bc99c6586a4bbf393780d74f50ef2efdca56cbf471053bab6347b91b7d2386
    [root@localhost ~]# docker volume ls
    DRIVER VOLUME NAME
    local info
    local mysqlconfig
    local mysqldata
    # 查看数据卷详情,查看挂载宿主机的配置目录地址
    [root@localhost ~]# docker volume inspect mysqlconfig
    [
    {
    "CreatedAt": "2021-02-11T00:52:09+08:00",
    "Driver": "local",
    "Labels": null,
    "Mountpoint": "/var/lib/docker/volumes/mysqlconfig/_data",
    "Name": "mysqlconfig",
    "Options": null,
    "Scope": "local"
    }
    ]
    # 进入目录查看配置文件,我们修改该目录的配置文件即可
    [root@localhost ~]# cd /var/lib/docker/volumes/mysqlconfig/_data
    [root@localhost _data]# ls
    conf.d my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
  1. 将mysql数据库备份为sql文件

    • 导出全部数据:docker exec mysql|容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
    • 导出指定库数据:docker exec mysql sh -c 'exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
    • 导出指定库数据不要数据:docker exec mysql sh -c 'exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
  2. 执行sql文件到mysql中

    • docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql

2. 安装Redis服务

  1. 在docker search搜索redis镜像

    • docker search redis
  2. 拉取redis镜像到本地

    • docker pull redis
  3. 启动redis服务运行容器

    • 没有暴露外部端口:docker run --name redis -d redis:tag
    • 暴露外部宿主机端口为6379进行连接:docker run --name redis -p 6379:6379 -d redis:tag
    1
    2
    3
    4
    5
    6
    7
    [root@localhost ~]# docker run --name redis -p 6379:6379 -d redis:latest
    89cd4e83cdcea1a09d1787b69c45ddd5b77416c0bba0290bb92095c9b1e49465
    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    89cd4e83cdce redis:latest "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 0.0.0.0:6379->6379/tcp redis
    12674e8ddf28 tomcat "catalina.sh run" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp tomcat
    91bc99c6586a mysql:5.7.33 "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

    我们已经看到redis已经启动成功了,我们这是可以用工具连接一下:

  4. 查看启动日志

    • docker logs -t -f 容器id|容器名称
  5. 进入容器内部查看

    • docker exec -it 容器id|容器名称 bash
    1
    2
    3
    4
    5
    6
    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    89cd4e83cdce redis:latest "docker-entrypoint.s…" 21 minutes ago Up 21 minutes 0.0.0.0:6379->6379/tcp redis
    [root@localhost ~]# docker exec -it 89cd4e83cdce bash
    root@89cd4e83cdce:/data# ls
    root@89cd4e83cdce:/data#

    进入容器后,只有一个空的data目录

  1. 开启redis持久化

    • docker run --name redis -d -p 6379:6379 -v redisdata:/data redis:latest redis-server --appendonly yes
    • 注意:一旦开启持久化之后,持久化生成aof文件会被放入容器中/data目录中
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [root@localhost ~]# docker run --name redis -d -p 6379:6379 -v redisdata:/data redis:latest redis-server --appendonly yes
    8a90b7c4bab8ebce8ec39f8f70a23d288f7f4991f661ef9e1fa47b084afae8e6
    [root@localhost ~]# docker volume inspect redisdata
    [
    {
    "CreatedAt": "2021-02-11T03:07:35+08:00",
    "Driver": "local",
    "Labels": null,
    "Mountpoint": "/var/lib/docker/volumes/redisdata/_data",
    "Name": "redisdata",
    "Options": null,
    "Scope": "local"
    }
    ]
    [root@localhost ~]# cd /var/lib/docker/volumes/redisdata/_data
    [root@localhost _data]# ls
    appendonly.aof
  1. 加载外部自定义配置启动redis容器

    • 默认情况下redis官方镜像中没有redis.conf配置文件 需要去官网下载指定版本的配置文件Redis官网
      1. wget https://download.redis.io/releases/redis-6.0.10.tar.gz 下载官方安装包
      2. 将官方安装包中配置文件进行复制到宿主机指定目录中如 /root/redis/redis.conf文件
      3. 修改需要自定义的配置
        • bind 0.0.0.0 开启远程权限 – 搜索/bind
        • appenonly yes 开启aof持久化
      4. 加载配置启动
        • docker run --name redis -v /root/redis:/usr/local/etc/redis -p 6379:6379 -d redis:latest redis-server /usr/local/etc/redis/redis.conf
        • 注意:当前/root/redis目录中存在redis.conf文件的
  2. 将数据目录挂在到本地保证数据安全

    • docker run --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf

3. 安装Nginx

  1. 在docker search搜索nginx

    • docker search nginx
  2. 拉取nginx镜像到本地

    • docker pull nginx
  3. 启动nginx容器

    • docker -d run -p 80:80 --name nginx nginx
  4. 进入nginx容器

    • docker exec -it nginx /bin/bash
      • 查找目录: whereis nginx
      • 配置文件: /etc/nginx/nginx.conf
    1
    2
    3
    4
    5
    6
    7
    8
    [root@localhost ~]# docker run -d --name nginx -p 80:80 nginx
    7d39100c58ac38e7509c7dfe855ae0d1b10d4a469d4e2eaa83222b8f79fb9603
    [root@localhost ~]# docker exec -it nginx bash
    root@7d39100c58ac:/# whereis nginx
    nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
    root@7d39100c58ac:/# cd /etc/nginx
    root@7d39100c58ac:/etc/nginx# ls
    conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utf
  1. 复制配置文件到宿主机

    • docker cp nginx(容器id|容器名称):/etc/nginx/nginx.conf 宿主机目录
    1
    2
    3
    4
    5
    6
    [root@localhost ~]# docker cp nginx:/etc/nginx/nginx.conf /root/nginx/
    [root@localhost ~]# cd nginx/
    [root@localhost nginx]# pwd
    /root/nginx
    [root@localhost nginx]# ls
    nginx.conf
  1. 挂在nginx配置以及html到宿主机外部

    • docker run -d --name nginx -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 80:80 nginx

4. 安装Tomcat

  1. 在docker search搜索tomcat
    • docker search tomcat
  2. 下载tomcat镜像
    • docker pull tomcat:tag (tag不加默认最新版本)
  3. 运行tomcat镜像
    • docker run -d -p 8080:8080 --name tomcat tomcat
  4. 进入tomcat容器
    • docker exec -it tomcat /bin/bash
  5. 将webapps目录挂载在宿主机
    • docker run -d -p 8080:8080 -v webapps:/usr/local/tomcat/webapps --name tomcat tomcat
      • -v webapps 将部署应用目录通过数据卷挂载宿主机系统
      • 注意:部署web应用在容器中目录为/usr/local/tomcat/webapps,配置文件/usr/local/tomcat/conf
  6. 修改配置文件,并将应用目录通过数据卷挂载到宿主机
    • docker run -d -p 8080:8080 --name tomcat -v webapps:/usr/local/tomcat/webapps -v confs:/usr/local/tomcat/conf tomcat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[root@localhost ~]# docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 2938 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 86 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 55 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 37 [OK]
kubeguide/tomcat-app Tomcat image for Chapter 1 29
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 18 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 13 [OK]
arm32v7/tomcat Apache Tomcat is an open source implementati… 10
maluuba/tomcat7-java8 Tomcat7 with java8. 6
rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl… 6 [OK]
unidata/tomcat-docker Security-hardened Tomcat Docker container. 5 [OK]
arm64v8/tomcat Apache Tomcat is an open source implementati… 3
amd64/tomcat Apache Tomcat is an open source implementati… 2
jelastic/tomcat An image of the Tomcat Java application serv… 2
cfje/tomcat-resource Tomcat Concourse Resource 2
ppc64le/tomcat Apache Tomcat is an open source implementati… 1
camptocamp/tomcat-logback Docker image for tomcat with logback integra… 1 [OK]
picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAGER… 1 [OK]
chenyufeng/tomcat-centos tomcat基于centos6的镜像 1 [OK]
oobsri/tomcat8 Testing CI Jobs with different names. 1
99taxis/tomcat7 Tomcat7 1 [OK]
secoresearch/tomcat-varnish Tomcat and Varnish 5.0 0 [OK]
softwareplant/tomcat Tomcat images for jira-cloud testing 0 [OK]
s390x/tomcat Apache Tomcat is an open source implementati… 0
[root@localhost ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
b9a857cbf04d: Pull complete
d557ee20540b: Pull complete
3b9ca4f00c2e: Pull complete
667fd949ed93: Pull complete
661d3b55f657: Pull complete
511ef4338a0b: Pull complete
a56db448fefe: Pull complete
00612a99c7dc: Pull complete
326f9601c512: Pull complete
c547db74f1e1: Pull complete
Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7.33 a70d36bc331a 3 weeks ago 449MB
tomcat latest 040bdb29ab37 4 weeks ago 649MB
[root@localhost ~]# docker run -d -p 8080:8080 --name tomcat -v webapps:/usr/local/tomcat/webapps -v confs:/usr/local/tomcat/conf tomcat
12674e8ddf28fd09966093bef62dfd0308d1f876fd234d16b520c6aefc11eeea
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local confs
local info
local mysqlconfig
local mysqldata
local webapps

5. 安装MongoDB数据库

  1. docker search mongo搜索mongo镜像

  2. 下载并运行mongo

    • 无需权限:docker run -d -p 27017:27017 --name mongo mongo
    • 常见具有的权限:docker run -d -p 27017:27017 --name mongo mongo --auth
  3. 进入容器配置用户名密码

    • docker exec -it mongo /bin/bash
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    [root@localhost ~]# docker exec -it mongo bash
    root@2134279b5c49:/# mongo
    MongoDB shell version v4.4.3
    connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("8878de79-9548-42f6-8fd8-2dec9608fdd9") }
    MongoDB server version: 4.4.3
    Welcome to the MongoDB shell.
    For interactive help, type "help".
    For more comprehensive documentation, see
    https://docs.mongodb.com/
    Questions? Try the MongoDB Developer Community Forums
    https://community.mongodb.com
    ---
    The server generated these startup warnings when booting:
    2021-02-10T22:31:51.760+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
    2021-02-10T22:31:51.760+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
    2021-02-10T22:31:51.760+00:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
    ---
    ---
    Enable MongoDB's free cloud-based monitoring service, which will then receive and display
    metrics about your deployment (disk utilization, CPU, operation statistics, etc).

    The monitoring data will be available on a MongoDB website with a unique URL accessible to you
    and anyone you share the URL with. MongoDB may use this information to make product
    improvements and to suggest MongoDB products and deployment options to you.

    To enable free monitoring, run the following command: db.enableFreeMonitoring()
    To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
    ---
    > use admin
    switched to db admin
    > db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
    Successfully added user: {
    "user" : "root",
    "roles" : [
    {
    "role" : "root",
    "db" : "admin"
    }
    ]
    }
    > exit
    bye
    root@2134279b5c49:/#
    • use admin选择admin库
    • db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})创建用户,此用户创建成功,则后续操作都需要用户认证
  4. 将mongoDB中数据目录映射到宿主机中

    • docker run -d -p 27017:27017 -v mongodata:/data/db --name mongo mongo

6. 安装ElasticSearch

elasticsearch

  1. docker hub搜索镜像,选择6.8.13的版本安装
  2. 下载elasticsearch 6.8.13的镜像
    • docker pull elasticsearch:tag
  3. 运行elasticsearch的镜像
    • docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

注意:elasticsearch在启动后,查看日志,会看到如下的警告

image-20210213083531223

解决方案:

  1. 在centos虚拟机中,修改配置sysctl.conf

    • vim /etc/sysctl.conf
  2. 加入如下配置

    • vm.max_map_count=262144

    image-20210213083945554

  3. 启用配置

    • sysctl -p
    1
    2
    [root@localhost ~]# sysctl -p
    vm.max_map_count = 262144

    之后重新启动es容器,再次查看日志就不会报错了,这是我们可以访问一下http://ip:9200 elasticsearch web页面

image-20210213084658676

注意:这一步是为了防止启动容器时,报出如下错误:
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

es中持久化方案

注意:es所有数据都在容器中的目录/usr/share/elasticsearch/data,配置信息都在容器中的目录/usr/share/elasticsearch/config

启动es,将数据信息和配置信息都挂载到宿主机中

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v esdata:/usr/share/elasticsearch/data -v esconfig:/usr/share/elasticsearch/config elasticsearch:tag

安装IK分词器

  1. 现在对应版本的ik分词器

    • wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.13/elasticsearch-analysis-ik-6.8.13.zip
  2. es容器中插件目录/usr/share/elasticsearch/plugins,启动容器是挂载处理,并在挂载目录plugins中,解压elasticsearch-analysis-ik-6.8.13.zip

    • 挂载plugins启动es:docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v esdata:/usr/share/elasticsearch/data -v esconfig:/usr/share/elasticsearch/config -v esplugins:/usr/share/elasticsearch/plugins elasticsearch:tag

    • 查看数据卷详细信息,找到挂载宿主机的目录:docker volume inspectesplugins

    • 将ik分词器,移动到挂载宿主机目录中,并解压

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      [root@localhost ~]# docker volume inspect esplugins
      [
      {
      "CreatedAt": "2021-02-11T05:43:43+08:00",
      "Driver": "local",
      "Labels": null,
      "Mountpoint": "/var/lib/docker/volumes/esplugins/_data",
      "Name": "esplugins",
      "Options": null,
      "Scope": "local"
      }
      ]
      [root@localhost ~]# cd /var/lib/docker/volumes/esplugins/_data
      [root@localhost _data]# mv /root/elasticsearch-analysis-ik-6.8.13.zip .
      [root@localhost _data]# ls
      elasticsearch-analysis-ik-6.8.13.zip
      [root@localhost _data]# yum install unzip
      [root@localhost _data]# mkdir ik
      [root@localhost _data]# mv elasticsearch-analysis-ik-6.8.13.zip ik/
      [root@localhost ik]# unzip elasticsearch-analysis-ik-6.8.13.zip
  1. 解压完成后,再次重启elasticsearch,查看日志

    • docker restart 容器id|容器名

    • docker logs -f 容器id|容器名

      image-20210213092753151

      已经加载了插件ik分词器

  2. 自定义扩展词和停用词

    1. 修改ik配置文件,添加自定义扩展词和停用词

      • 进入的配置文件:

        1
        2
        cd /var/lib/docker/volumes/esplugins/_data/ik/config
        vim IKAnalyzer.cfg.xml
  - 修改内容如下:

    
1
2
3
4
5
6
7
8
   
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext_dict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">ext_stopwords.dic</entry>
</properties>

  1. 在ik分词器目录下config目录中创建ext_dict.dic文件 编码一定要为UTF-8才能生效

    • vim ext_dict.dic 加入扩展词即可
      
      1
      2
      3
      4
      5
      6
      7



      3. 在ik分词器目录下config目录中创建ext_stopword.dic文件

      - ```bash
      vim ext_stopwords.dic 加入停用词即可
  1. 重启容器生效

    • docker restart 容器id
  2. 将此容器提交成为一个新的镜像

    • docker commit -a="lvjing" -m="es with IKAnalyzer" 容器id lvjing/elasticsearch:tag

es的启动

注意:es是非常耗内存的,在启动es后,在Linux下输入命令反应就非常慢,则我们在启动es的时候,需要指定jvm内存大小启动

1
2
3
4
5
6
7
8
9
[root@localhost ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a4e18036fa7a elasticsearch 2.96% 416.2MiB / 991.2MiB 41.99% 656B / 0B 225MB / 1.33MB 48
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a4e18036fa7a elasticsearch 2.96% 416.2MiB / 991.2MiB 41.99% 656B / 0B 225MB / 1.33MB 48
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a4e18036fa7a elasticsearch 113.11% 417.1MiB / 991.2MiB 42.08% 656B / 0B 225MB / 1.66MB 48
...
[root@localhost ~]# docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v esconfig:/usr/share/elasticsearch/config -v esplugins:/usr/share/elasticsearch/plugins -v esdata:/usr/share/elasticsearch/data elasticsearch:tag

kibana

  1. docker hub搜索kibana镜像,要与elasticsearch版本一致

  2. 下载kibana镜像

    • docker pull kibana:tag
  3. 启动kibana,并连接es服务

    • docker run -d --name kibana -e ELASTICSEARCH_URL=http://ip:9200 -p 5601:5601 kibana:tag
  4. 启动kibana,加载配置文件

    • docker run -d --name kibana -e ELASTICSEARCH_URL=http://ip:9200 -p 5601:5601 -v kibanaconfig:/usr/share/kibana/config kibana:tag
    • 注意:可以在kibanaconf数据卷所在的宿主机目录中加入kibana文件修改配置文件信息,则就不需要在启动命令指定连接的es服务
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    [root@localhost ~]# docker run -d --name kibana -p 5601:5601 -v kibanaconfig:/usr/share/kibana/config kibana:6.8.13
    6af4b0da7090c347907240dbd124f69bdad6385e993bd67ef739d6a9ae1cb819
    [root@localhost ~]# docker volume inspect kibanaconfig
    [
    {
    "CreatedAt": "2021-02-11T06:22:43+08:00",
    "Driver": "local",
    "Labels": null,
    "Mountpoint": "/var/lib/docker/volumes/kibanaconfig/_data",
    "Name": "kibanaconfig",
    "Options": null,
    "Scope": "local"
    }
    ]
    [root@localhost ~]# cd /var/lib/docker/volumes/kibanaconfig/_data
    [root@localhost _data]# ls
    kibana.yml
    [root@localhost _data]# vim kibana.yml
    [root@localhost _data]# cat kibana.yml
    #
    # ** THIS IS AN AUTO-GENERATED FILE **
    #

    # Default Kibana configuration for docker target
    server.name: kibana
    # 0 表示所有服务都可连
    server.host: "0"
    # 修改指定连接的es服务
    elasticsearch.hosts: [ "http://192.168.1.115:9200" ]
    xpack.monitoring.ui.container.elasticsearch.enabled: true
    [root@localhost ~]# docker restart 6af4b0da7090
  1. 启动成功后,浏览器访问http://ip:5601查看kibana页面

    image-20210213095345965