docker 安裝nginx/tomcat/ES+kibana
Docker 安裝nginx
-
搜尋映象 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 /]#
-
拉取映象 dcoker pull 映象名
dcoker pull nginx # 未標註tag版本,則為拉取最新版本lastest
-
檢視下載的映象 docker images 映象名
docker images nginx REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 87a94228f133 4 weeks ago 133MB
-
**執行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
-
**檢視啟動的容器 docker ps **
docker ps
-
進入容器 docker exec -it 容器ID/容器名
docker exec -it # exect 進入容器,並且進入一個新的命令終端 # -it 容器的互動模式 # /bin/bash 進入容器後的目錄 [root@localhost /]# docker exec -it 135cdcced441 /bin/bash root@135cdcced441:/#
-
**退出容器 exit **
exit root@135cdcced441:/# exit exit [root@localhost /]# # ctrl + p + q 退出容器,並且容器繼續執行
-
停止容器 doker stop 容器名/容器id
docker stop nginx01 [root@localhost /]# docker stop nginx01 nginx01 [root@localhost /]# # docker kiall 容器id/容器名 停止容器執行
-
刪除容器 docker rm 容器名/容器id
docker rm nginx01 [root@localhost /]# docker rm nginx01 nginx01
-
**刪除映象 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
- 啟動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 ? 網路配置
- 測試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,我們可以通過新增環境配置限制記憶體的佔用量
-
限制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
,可以通過各種圖表進行高階資料分析及展示。
- **搜尋映象 docker search **
docekr search kibana
- **拉取映象 docker pull **
docker pull kibana:7.5.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
- 啟動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 掛載配置檔案,在宿主機中修改配置檔案,即可同步到容器中
- 在瀏覽器上訪問
這裡需要注意,訪問的是我們對映的宿主機的IP:埠
http://IP:5601/
# 訪問頁面當出現下面的語句時,說明kibana未連線到es
Kibana server is not ready yet
- 查docker容器日誌
docker logs -f kibana
- 暫停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"
建立一個自己的網路
-
建立命令 docker network create
需要注意的是,自己建立的網段不要和宿主機相同
docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 172net
- 查詢自己的網路 docker network inspect 網路名
docker network inspect 172net
- 使用自己的網路啟動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
-
訪問kibana容器
http://192.168.8.128:5601/
這裡登陸需要注意,不要使用kibana賬戶,kibana賬戶是kibana專門連線es使用的
建議:使用elastic 賬戶,密碼是es初始化設定密碼的時候設定的