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 镜像名 ```shell docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 87a94228f133 4 weeks ago 133MB
4. **运行nginx容器 docker run **
```shell
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 ```shell docker stop nginx01 [root@localhost /]# docker stop nginx01 nginx01 [root@localhost /]#
docker kiall 容器id/容器名 停止容器运行
9. **删除容器 docker rm 容器名/容器id**
```shell
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
- 启动e
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启动是否成功 ```shell 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,我们可以通过添加环境配置限制内存的占用量
3. **限制ES使用的内存量,重启ES**
```shell
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初始化设置密码的时候设置的