Docker进阶 部署nginx、部署Tomcat、部署ES+Kibana

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Docker 部署 Nginx搜索Nginx镜像:搜索镜像建议前往官网docker hub去搜,这样可以看到帮助文档信息Docker Hubhttps://hub.docker.com/#找到想要拉取的版本,这里列出前三个[root@localhost ~]# docker search nginxNAME DESCRIPTION


Docker 部署 Nginx
搜索Nginx镜像:
搜索镜像建议前往官网docker hub去搜,这样可以看到帮助文档信息

Docker Hub
https://hub.docker.com/

找到想要拉取的版本,这里列出前三个

[root@localhost ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16639 [OK]
bitnami/nginx Bitnami nginx Docker Image 122 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 41
拉取需要的Nginx镜像:

这里拉取最新版的Nginx镜像

[root@localhost ~]# docker pull nginx
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 12766a6745ee 2 weeks ago 142MB
启动Nginx镜像:

我们以后台的方式启动Nginx,并给nginx挂载一个名字:nginx01,

并给nginx这个服务暴露一个端口号,在加上需要启动的镜像镜像

[root@localhost ~]# docker run -d --name nginx01 -p:2022:80 nginx
63ede60d0df902b3a9267ffb8b1b1b2202d1ba66bae0dcee0c41422788e9ceb5

查看启动的容器

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63ede60d0df9 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:2022->80/tcp, :::2022->80/tcp nginx01

-d 后台启动容器

--name 给容器取个名字

-p 宿主机端口:容器内部端口 暴露端口

docker run 创建容器时,可以加参数 -p 暴露端口,让外网可以访问这个docker容器

使用方法:-p参数放在依赖的镜像之前

docker run -启动方式 --name 容器名 -p:宿主机端口:容器端口

其中:服务器端口也就是虚拟机端口,docker端口默认是80,
本机自测Nginx:
[root@localhost ~]# curl localhost:2022
<!DOCTYPE html>


Welcome to nginx!

出现了Welcome to nginx!这个标题,欢迎来到nginx!

证明服务已经启动成功
浏览器访问Nginx服务: 
image.png

 端口暴露的概念:
image.png

Docker 部署 Tomcat
拉取Tomcat镜像:

拉取想要部署的tomcat版本镜像,这里拉取最新版的tomcat

[root@localhost ~]# docker pull tomcat
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest b00440a36b99 2 weeks ago 680MB
启动Tomcat镜像

以后台运行的方式启动Tomcat镜像,并给容器起个tomcat01的名字,

给这个容器暴露端口3344:8080 ,把容器外部的3344端口给容器内部的8080端口做一个映射,这样容器外面的3344端口就能访问带容器内部的8080端口了,并写上依赖的镜像tomcat

[root@localhost ~]# docker run -d --name tomcat01 -p 3344:8080 tomcat
0a983131160d82a25f355717bac46ecab122ad99b81f1406ec295cc7363c35bc

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a983131160d tomcat "catalina.sh run" 45 seconds ago Up 44 seconds 0.0.0.0:3344->8080/tcp, :::3344->8080/tcp tomcat01
外网访问Tomcat
image.png

 发现服务未找到,解决该问题:

解决Tomcat 404服务未找到问题

测试访问没有问题,但服务未找到,那就这个容器出现问题。

进入该容器:

[root@localhost ~]# docker exec -it tomcat01 /bin/bash
root@0a983131160d:/usr/local/tomcat# ll
bash: ll: command not found
root@0a983131160d:/usr/local/tomcat# ls -a
. LICENSE RUNNING.txt logs webapps.dist
.. NOTICE bin native-jni-lib work
BUILDING.txt README.md conf temp
CONTRIBUTING.md RELEASE-NOTES lib webapps
root@0a983131160d:/usr/local/tomcat# ls webapps
root@0a983131160d:/usr/local/tomcat#

发现问题,1、linux命令少了 2、没有webapps 阿里云镜像的原因。默认是最小的镜像,所有不必要的都剔除掉了,保证最小可运行的环境。

解决问题:

发现该有的文件都被压缩在webapps.dist文件里了

root@0a983131160d:/usr/local/tomcat# ls webapps.dist
ROOT docs examples host-manager manager

所以将这个压缩文件里的文件全部复制到webapps文件里即可解决问题

root@0a983131160d:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@0a983131160d:/usr/local/tomcat# ls webapps
ROOT docs examples host-manager manager

这样webapps目录下就有文件目录了

重新使用外网访问Tomcat,成功:
image.png

部署ES+Kibana
 我们在官网docker.hub上查看最新版本的信息,和部署方法 
image.png

拉取elasticsearch镜像
拉取需要的elasticsearch镜像
[root@localhost ~]# docker pull elasticsearch:8.1.2
 启动elasticsearch镜像

这里以官网的方式启动,官网里的参数可根据自己的需求更改,这里不需要网络配置参数,所以去除了

--net somenetwork参数

[root@localhost ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.1.2
426d8e8712e58631cde8ead11034b51bddea83869ff2ce9c683b48f1468861cf

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

                          NAMES

426d8e8712e5 elasticsearch:8.1.2 "/bin/tini -- /usr/l…" 53 seconds ago Up 52 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
这个elasticsearch耗内存比较大,单这个elasticsearch就会占1个多G的内存,所以配置这个容器建议把虚拟机配置调大一些,否则容易卡顿

查看docker cpu内存状态
可以看到光一个elasticsearch容器就占用了2个多G

[root@localhost ~]# docker stats
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT    MEM %     NET I/O          BLOCK I/O       PIDS
426d8e8712e5   elasticsearch   0.82%     2.265GiB / 3.84GiB   58.99%    40.5MB / 211kB   232MB / 183MB   62
限制容器的内存使用

增加内存的限制,修改配置文件,-e 环境配置修改

[root@localhost ~]# docker run -d --name elasticsearch03 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.1.2
fd5f8f41d9212109d4124b6b89597ffaacf4699665c59e7d6e7a4a62f64a0eba

这里添加了参数-e ES_JAVA_OPTS="Xms64m -Xms512m"

限制内存最小分配64m 最大分配512m

查看限制内存后的elasticsearch容器:

[root@localhost ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
fd5f8f41d921 elasticsearch03 0.81% 525.6MiB / 3.84GiB 13.37% 40.4MB / 251kB 20.2MB / 168MB 63

发现现在只占用525m了,是之前的四分之一的内存

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6天前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
54 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
17天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
56 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
7天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
7天前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
17 1
|
19天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
46 2
|
20天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
29 3
|
7天前
|
前端开发 开发者 Docker
深入探索Docker Compose:简化多容器应用的部署
深入探索Docker Compose:简化多容器应用的部署
27 0
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
3月前
|
应用服务中间件 nginx Docker
Docker 安装 Nginx
Docker 安装 Nginx
111 0