1、Nginx常用来做负载均衡和反向代理。
2、部署nginx
(1)查找镜像
(2)拉取镜像
(3)查看已下载镜像
3、运行nginx实例。
(1)运行一个实例。
命令:docker run -d --name nginx01 -p 3344:80 nginx
解释:-d,以后台方式运行;--name nginx01,定义的运行容器实例名字;-p 3344:80 将容器内部的80端口映射给宿主机的3344端口;nginx,镜像名称。
通过查看发现,该容器已经运行。
(2)本机自测检验是否可以访问nginx
命令:curl localhost:3344
(3)端口映射浅析
如图所示,容器是一个互相隔离的小系统,容器与宿主机之间是无法直接访问,所以需要通过接口映射将容器内部端口与宿主机进行映射,暴露宿主机的端口供访问。
(4)上述过程即是对nginx的部署,理论上在外网可以直接访问。(ps:但是我实际测试访问失败了,不知道是什么原因)
1、安装tomcat之前建议先去docker官网查看支持的tomcat版本。
2、用完即删除的容器运行方式
命令:docker run -it --rm tomcat:9.0
直接运行tomcat9.0版本(docker如果不存在镜像,会先去拉去,所以可以不先下载镜像而直接运行容器);运行方式选择--rm方式,即启动这个容器之后就开始运行,当容器停止就把这个容器删除(之前的方式可以查看到历史容器运行记录)。
停止容器,查看记录,发现并没有历史容器记录,但是有tomcat这个镜像。
3、部署tomcat。
命令:docker run -d --name tomcat01 -p 3355:8080 tomcat
由上图可知,部署成功
ES的特点:es暴露的端口很多,且非常耗内存,而且需要挂在到安全目录。
1、开启容器,
指令:docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
含义:将9200、9300端口暴露出来;-e"discovery.type=single-node",使用单节点模式;elasticsearch:7.6.2,指定es的版本。
使用es之后,服务器会变得很卡!
可以使用 docker stats 查看系统资源占用情况。从下图可以看到,目前只有一个tomcat02的容器在跑。
2、如何解决ES占用内存的情况呢?
可以修改环境变量方式来分配内存。
命令:docker run -d --name elasticsearch03 -p 9400:9400 -p 9500:9500 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xms512m" elasticsearch:7.6.2
含义:-e ES_JAVA_OPTS="-Xms64m -Xms512m",表示只分配64M到512M的内存给ES这个容器。
3、容器内部如何通信?
容器之间是互相隔离的,所以不能直接连接。所以需要通过服务器内网地址进行转接,内网与容器之间也需要做一个映射。