1. 程式人生 > 其它 >docker 安裝nginx/tomcat/ES+kibana

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
    
  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 
    
    
  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 
    

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 ? 網路配置
  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的記憶體
    
    

我們對比記憶體使用情況可以看到使用記憶體減少

部署kibana

Kibana是一個針對Elasticsearch的開源分析及視覺化平臺,用來搜尋、檢視互動儲存在Elasticsearch索引中的資料。使用Kibana,可以通過各種圖表進行高階資料分析及展示。

  1. **搜尋映象 docker search **
docekr search kibana 

  1. **拉取映象 docker pull **
docker pull kibana:7.5.1 
  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 

  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 掛載配置檔案,在宿主機中修改配置檔案,即可同步到容器中

  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

 

建立自定義網路的優點是:

我們無需再使用docker 的--link命令,將兩個容器打通,該命令建議不再使用

自定義網路,使用的是橋接模式,會自動維護容器啟動的IP到網路的配置檔案中,並且保證容器在同一個網段,此時我們就可以ping通容器與容器

自定義網路需要注意,定義的網段不可以與宿主機在同一個網段,否則公網無法訪問

公網測試訪問kibana

  1. 訪問kibana容器

    http://192.168.8.128:5601/
    

這裡登陸需要注意,不要使用kibana賬戶,kibana賬戶是kibana專門連線es使用的

建議:使用elastic 賬戶,密碼是es初始化設定密碼的時候設定的