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自定义镜像

posted @ 2021-11-11 16:07  Mr*宇晨  阅读(186)  评论(0编辑  收藏  举报