Docker 安装nginx

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

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


    Docker 命令 - 图1

  2. 查看下载的镜像 docker images 镜像名 ```shell docker images nginx

REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 87a94228f133 4 weeks ago 133MB

  1. 4. **运行nginx容器 docker run **
  2. ```shell
  3. docker run --name nginx01 -d -p 8000:80 nginx
  4. # 启动 容器名为nginx01
  5. # -d 后台启动
  6. # -p 映射宿主机端口8000到容器暴露端口80
  7. [root@localhost /]# docker run --name nginx01 -d -p 8000:80 nginx
  8. 135cdcced441a2092ca70acca4051653b22c8cf8f812c9104cdaf6b464f2bb28
  1. 查看启动的容器 docker ps

    1. docker ps


    Docker 命令 - 图2

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

    1. docker exec -it
    2. # exect 进入容器,并且进入一个新的命令终端
    3. # -it 容器的交互模式
    4. # /bin/bash 进入容器后的目录
    5. [root@localhost /]# docker exec -it 135cdcced441 /bin/bash
    6. root@135cdcced441:/#
  1. 退出容器 exit
    1. exit
    2. root@135cdcced441:/# exit
    3. exit
    4. [root@localhost /]#
    5. # ctrl + p + q 退出容器,并且容器继续运行
  1. 停止容器 doker stop 容器名/容器id ```shell docker stop nginx01 [root@localhost /]# docker stop nginx01 nginx01 [root@localhost /]#

docker kiall 容器id/容器名 停止容器运行

  1. 9. **删除容器 docker rm 容器名/容器id**
  2. ```shell
  3. docker rm nginx01
  4. [root@localhost /]# docker rm nginx01
  5. nginx01
  1. 删除镜像 docker rmi 镜像id
    1. docker rmi

    Docker 命令 - 图3

docker 安装tomcat

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

部署elasticsearch+kibana

部署ES

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

Docker 命令 - 图4

  1. 测试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 /]#

  1. 通过测试,我们可以看到es启动成功,但是我们服务器的内存占用的大部分,先停止es,我们可以通过添加环境配置限制内存的占用量
  2. 3. **限制ES使用的内存量,重启ES**
  3. ```shell
  4. 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
  5. # -e ES_JAVA_OPTS="-Xms64m -Xmx512m" 限制es只是用512的内存

Docker 命令 - 图5

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

部署kibana

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

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

Docker 命令 - 图6

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

Docker 命令 - 图7

  1. 启动ES和kibana
  1. # 1.启动es
  2. 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
  3. # 2.启动kibana
  4. 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
  5. # -v 挂载配置文件,在宿主机中修改配置文件,即可同步到容器中

Docker 命令 - 图8

  1. 在浏览器上访问

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

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

ES初始化设置密码

  1. # 1. 进入es容器
  2. docker exec -it es /bin/bash
  3. # 2. 进入config 目录
  4. cd config
  5. # 3. 修改es配置文件
  6. vim elasticsearch.yml
  7. # 添加相关参数
  8. http.cors.enabled: true
  9. http.cors.allow-origin: "*"
  10. http.cors.allow-headers: Authorization
  11. xpack.security.enabled: true
  12. xpack.security.transport.ssl.enabled: true
  13. # 4. 退出容器
  14. exit
  15. # 5. 重启es
  16. docker restart es
  17. # 6. 进入es容器
  18. docker exec -it es /bin/bash
  19. # 7. 进入/bin目录
  20. elasticsearch-setup-passwords interactive
  21. # 设置密码
  22. [root@node01 elasticsearch-7.7.0]# bin/elasticsearch-setup-passwords interactive
  23. future versions of Elasticsearch will require Java 11; your Java version from [/opt/app/jdk1.8.0_181/jre] does not meet this requirement
  24. Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
  25. You will be prompted to enter passwords as the process progresses.
  26. Please confirm that you would like to continue [y/N]y
  27. Enter password for [elastic]:
  28. Reenter password for [elastic]:
  29. Enter password for [apm_system]:
  30. Reenter password for [apm_system]:
  31. Enter password for [kibana]:
  32. Reenter password for [kibana]:
  33. Enter password for [logstash_system]:
  34. Reenter password for [logstash_system]:
  35. Enter password for [beats_system]:
  36. Reenter password for [beats_system]:
  37. Enter password for [remote_monitoring_user]:
  38. Reenter password for [remote_monitoring_user]:
  39. Changed password for user [apm_system]
  40. Changed password for user [kibana]
  41. Changed password for user [logstash_system]
  42. Changed password for user [beats_system]
  43. Changed password for user [remote_monitoring_user]
  44. Changed password for user [elastic]
  45. # 8. 退出es容器,再次重启es容器
  46. exit
  47. docker restart es

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

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

创建一个自己的网络

  1. 创建命令 docker network create
    需要注意的是,自己创建的网段不要和宿主机相同
  1. docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 172net
  1. 查询自己的网络 docker network inspect 网络名
  1. docker network inspect 172net
  1. 使用自己的网络启动ES和kibana
  1. # 启动es
  2. 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
  3. #启动kibana
  4. 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 命令 - 图9

创建自定义网络的优点是:
我们无需再使用docker 的**--link**命令,将两个容器打通,该命令建议不再使用
自定义网络,使用的是桥接模式,会自动维护容器启动的IP到网络的配置文件中,并且保证容器在同一个网段,此时我们就可以**ping**通容器与容器
自定义网络需要注意,定义的网段不可以与宿主机在同一个网段,否则公网无法访问

公网测试访问kibana

  1. 访问kibana容器
    1. http://192.168.8.128:5601/
    Docker 命令 - 图10

这里登陆需要注意,不要使用kibana账户,kibana账户是kibana专门连接es使用的
建议:使用elastic 账户,密码是es初始化设置密码的时候设置的