Docker部署Nginx、tomcat、es
Docker部署Nginx
- 搜索镜像
也可以去docker官网搜索,这样可以查看具体的版本信息docker search nginx
- 拉取下载镜像 pull
docker pull nginx docker images # 查看是否下载成功镜像
- 运行
-d 后台运行
–name 给容器命名
-p 宿主机端口:容器内部端口docker run -d --name nginx01 -p 3344:80 nginx #3344是对于服务器外部的地址,nginx默认的80是容器内部的地址,也就是我们可以通过公网的3344访问docker的80
- 测试
curl localhost:3344
- 进入容器
docker exec -it nginx01 bin/bash
端口暴露
我们通过外网要访问到我们运行的nginx01,首先我们用的是阿里云服务器,要先通过阿里云安全组,然后通过linux的防火墙。 然后要访问到还需要-p 3344:80 映射到nginx才能访问到。
Docker部署tomcat
- 下载
官方提供的命令一般是用来测试的,因为它使用的–rm命令用完就会删除这个容器了:docker pull tomcat:9.0 # 指定下载9.0版本的tomcat
docker run -it --rm tomcat:9.0
- 运行
这时访问是404 ,因为tomcat还不是完整的docker run -d -p 3355:8080 --name tomcat02 tomcat #以后台方式,暴露端口方式,启动运行
- 进入容器
发现问题:1、linux命令少了。 2.webapps目录为空docker exec -it tomcat02 /bin/bash
原因:阿里云镜像的原因,阿里云默认是最小的镜像,所以不必要的都剔除掉 - 保证最小可运行的环境:将webapps.dist下的文件都拷贝到webapps下即可
cp -r webapps.dist/* webapps
Docker 部署elasticsearch+kibana
es的特点:
es 暴露的端口很多!
es 十分耗内存
es 的数据一般需要放置到安全目录!挂载
-
启动elasticsearch
千万不要用下面这个命令直接启动,因为es特别耗内存,直接这样启动会特别卡
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
正确命令:
加上-e 修改配置文件,增加内存的限制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
-
查看占用内存
docker stats
-
测试
curl localhost:9200
kibana连接elasticsearch
由于容器和容器之间是相互隔离的,kibana要想连接elasticsearch,可以通过linux 内网ip。
kibana走到内网地址,通过内网地址请求到es。
这其中就要用到docker网络原理