zoukankan      html  css  js  c++  java
  • docker 部署nginx/tomcat/ES+kibana

    Docker 安装nginx

    1. 搜索镜像 docker search 镜像名:tag

      docker search 镜像名:tag
      # 镜像名							描述信息										 次数		
      NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
      nginx                             Official build of Nginx.                        15777     [OK]       
      jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2092                 [OK]
      richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   818                  [OK]
      jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   273                  
      linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   159                  
      tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   144                  [OK]
      jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        143                  [OK]
      alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   110                  [OK]
      nginxdemos/hello                  NGINX webserver that serves a simple page co…   76                   [OK]
      privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   60                   [OK]
      nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   55                   
      nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  54                   
      staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   25                   [OK]
      nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con…   24                   
      nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   22                   
      schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
      centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   15                   
      centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
      flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
      webdevops/nginx                   Nginx container                                 9                    [OK]
      mailu/nginx                       Mailu nginx frontend                            9                    [OK]
      sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   7                    [OK]
      ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          3                    [OK]
      arnau/nginx-gate                  Docker image with Nginx with Lua enabled on …   1                    [OK]
      wodby/nginx                       Generic nginx                                   1                    [OK]
      [root@localhost /]# 
      
      
    2. 拉取镜像 dcoker pull 镜像名

      dcoker pull nginx 
      # 未标注tag版本,则为拉取最新版本lastest
      

      image-20211109164122005

    3. 查看下载的镜像 docker images 镜像名

      docker images nginx
      
      REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
      nginx        latest    87a94228f133   4 weeks ago   133MB
      
      
    4. 运行nginx容器 docker run

      docker run --name nginx01 -d  -p 8000:80 nginx 
      # 启动 容器名为nginx01
      # -d 后台启动 
      # -p 映射宿主机端口8000到容器暴露端口80 
      [root@localhost /]# docker run --name nginx01 -d -p 8000:80 nginx
      135cdcced441a2092ca70acca4051653b22c8cf8f812c9104cdaf6b464f2bb28
      
      
    5. 查看启动的容器 docker ps

      docker ps 
      
      

      image-20211109165027363

    6. 进入容器 docker exec -it 容器ID/容器名

      docker exec -it 
      # exect 进入容器,并且进入一个新的命令终端
      # -it 容器的交互模式
      # /bin/bash 进入容器后的目录
      [root@localhost /]# docker exec -it 135cdcced441 /bin/bash
      root@135cdcced441:/# 
      
      
    7. 退出容器 exit

      exit 
      root@135cdcced441:/# exit 
      exit
      [root@localhost /]# 
      # ctrl + p + q 退出容器,并且容器继续运行
      
    8. 停止容器 doker stop 容器名/容器id

      docker stop nginx01
      [root@localhost /]# docker stop  nginx01
      nginx01
      [root@localhost /]# 
      
      # docker kiall 容器id/容器名  停止容器运行
      
    9. 删除容器 docker rm 容器名/容器id

      docker rm nginx01
      
      [root@localhost /]# docker rm nginx01
      nginx01
      
      
    10. 删除镜像 docker rmi 镜像id

      docker rmi 
      

      image-20211109170158298

    docker 安装tomcat

    1. 搜索镜像 docker search tomcat 
    2. 拉取镜像 docker pull tomcat [这里使用最新版本tomcat]
    3. 查看镜像 docker images
    4. 启动容器,映射8080端口号 docker run --name tomcat01 -p 8080:8080 -d tomcat 
    5. 测试访问 curl localhost:8080 
    6. 进入容器 docker exec -it tomcat01 /bin/bash
    7. 进入容器的webapps.dist目录 cd /webapps.dist 
    8. 将webapps.dist目录中的文件拷贝到 webapps目录中  cp -r webapps.dist/* webapp 
    	【webapps目录为空,阿里云镜像的原因,阿里云默认是最小的镜像,所以不必要的都剔除掉,将webapps.dist下的文件都拷贝到webapps下即可】
    9. 退出容器 exit 
    10. 测试访问 curl localhost:8080 
    11. 验证出现tomcat首页
    

    部署elasticsearch+kibana

    部署ES

    1. 启动es
    docker run --name es -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
    # 1. es 需要暴露两个端口 9200 9300
    # 2. es 十分占用内存
    # 3. es 数据一般比较多重要需要挂载到宿主机的安全目录 
    # 4. -e 添加配置参数
    # 5. --net somenetwork ? 网络配置
    

    image-20211109173613423

    1. 测试ES启动是否成功
    curl localhost:9200
    
    [root@localhost /]# curl localhost:9200
    {
      "name" : "6dbd985b6410",
      "cluster_name" : "docker-cluster",
      "cluster_uuid" : "qLMbhOavRQepTkz3-HxsBw",
      "version" : {
        "number" : "7.6.2",
        "build_flavor" : "default",
        "build_type" : "docker",
        "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
        "build_date" : "2020-03-26T06:34:37.794943Z",
        "build_snapshot" : false,
        "lucene_version" : "8.4.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    [root@localhost /]# 
    

    通过测试,我们可以看到es启动成功,但是我们服务器的内存占用的大部分,先停止es,我们可以通过添加环境配置限制内存的占用量

    1. 限制ES使用的内存量,重启ES

      docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
      # -e ES_JAVA_OPTS="-Xms64m -Xmx512m" 限制es只是用512的内存
      
      

    image-20211109174236984

    我们对比内存使用情况可以看到使用内存减少

    部署kibana

    Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。

    1. 搜索镜像 docker search
    docekr search kibana 
    
    
    1. 拉取镜像 docker pull
    docker pull kibana:7.5.1 
    

    image-20211110094644304

    1. 修改配置文件
    1. 在宿主机上创建配置文件
    mkdir -p /data/elk7/kibana/config/
    vi /data/elk7/kibana/config/kibana.yml
    
    # 配置文件内容
    
    #
    ### ** THIS IS AN AUTO-GENERATED FILE **
    ###
    ##
    ### Default Kibana configuration for docker target
    server.name: kibana
    server.host: "0.0.0.0"
    elasticsearch.hosts: "http://172.18.0.2:9200"
    #pack.monitoring.ui.container.elasticsearch.enabled: false
    
    
    # 查容器IP地址
    docker inspect 容器id(或容器名字) |grep IPAddress 
    
    

    image-20211110101137193

    1. 启动ES和kibana
    # 1.启动es
    docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
    # 2.启动kibana
     docker run -d --name kibana03 --restart=always -p 5602:5601 -v /data/elk7/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.5.1
    # -v 挂载配置文件,在宿主机中修改配置文件,即可同步到容器中
    
    

    image-20211110102127854

    1. 在浏览器上访问

    这里需要注意,访问的是我们映射的宿主机的IP:端口

    http://IP:5601/
    # 访问页面当出现下面的语句时,说明kibana未连接到es
    Kibana server is not ready yet
    
    1. 查docker容器日志
    docker logs -f kibana
    
    1. 暂停es和kibana
    docker kill $(docker ps -q) #停止所有正在运行的容器
    

    ES初始化设置密码

    # 1. 进入es容器
    docker exec -it es /bin/bash 
    # 2. 进入config 目录
    cd config 
    # 3. 修改es配置文件
    vim  elasticsearch.yml 
    # 添加相关参数
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    # 4. 退出容器
    exit 
    # 5. 重启es
    docker restart es
    # 6. 进入es容器
    docker exec -it es /bin/bash 
    # 7. 进入/bin目录
    elasticsearch-setup-passwords interactive
    
    # 设置密码
    [root@node01 elasticsearch-7.7.0]# bin/elasticsearch-setup-passwords interactive
    future versions of Elasticsearch will require Java 11; your Java version from [/opt/app/jdk1.8.0_181/jre] does not meet this requirement
    Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
    You will be prompted to enter passwords as the process progresses.
    Please confirm that you would like to continue [y/N]y
     
     
    Enter password for [elastic]: 
    Reenter password for [elastic]: 
    Enter password for [apm_system]: 
    Reenter password for [apm_system]: 
    Enter password for [kibana]: 
    Reenter password for [kibana]: 
    Enter password for [logstash_system]: 
    Reenter password for [logstash_system]: 
    Enter password for [beats_system]: 
    Reenter password for [beats_system]: 
    Enter password for [remote_monitoring_user]: 
    Reenter password for [remote_monitoring_user]: 
    Changed password for user [apm_system]
    Changed password for user [kibana]
    Changed password for user [logstash_system]
    Changed password for user [beats_system]
    Changed password for user [remote_monitoring_user]
    Changed password for user [elastic]
    
    # 8. 退出es容器,再次重启es容器
    exit 
    docker restart es 
    
    

    添加es用户到kibana配置文件中

    # es默认的密码,在es中初始化 设置
    elasticsearch.username: "kibana" # kibana用户是es默认的kibana连接es的用户
    elasticsearch.password: "123456"
    

    创建一个自己的网络

    1. 创建命令 docker network create

      需要注意的是,自己创建的网段不要和宿主机相同

    docker network  create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 172net
    
    1. 查询自己的网络 docker network inspect 网络名
    docker network inspect 172net 
    
    1. 使用自己的网络启动ES和kibana
     # 启动es
     docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --net 172net  -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
     
     #启动kibana 
      docker run -d --name kibana01  -p 5601:5601 -v /data/elk7/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml --net 172net  kibana:7.5.1
    
     
    

    image-20211110173459670

    创建自定义网络的优点是:

    我们无需再使用docker 的--link命令,将两个容器打通,该命令建议不再使用

    自定义网络,使用的是桥接模式,会自动维护容器启动的IP到网络的配置文件中,并且保证容器在同一个网段,此时我们就可以ping通容器与容器

    自定义网络需要注意,定义的网段不可以与宿主机在同一个网段,否则公网无法访问

    公网测试访问kibana

    1. 访问kibana容器

      http://192.168.8.128:5601/
      

    image-20211111160012671

    这里登陆需要注意,不要使用kibana账户,kibana账户是kibana专门连接es使用的

    建议:使用elastic 账户,密码是es初始化设置密码的时候设置的


    相关Docker文章推荐

    Docker文件系统 & 数据卷

    Docker 安装及基本命令

    Docker 部署nginx/tomcat/ES+kibana

    Docker网络

    Docker C/S架构

    Dockerfile自定义镜像

  • 相关阅读:
    [UVA10859 放置街灯 Placing Lampposts]
    洛谷7月月赛题解(2020)
    [学习笔记]马拉车-Manacher
    [SP1026] FAVDICE
    [NOIP2013]货车运输
    [洛谷P1801]黑匣子
    [HAOI2015]树上染色
    python-第二块:time模块和datatime模块
    python-作业:员工信息表
    python-第二块,笔记整理和学习内容复习(day7)
  • 原文地址:https://www.cnblogs.com/MrYuChen-Blog/p/15540383.html
Copyright © 2011-2022 走看看