关于Docker如何安装nginx

目录

1.Nginx

1.2. 安装nginx

2.容器之间相互通信

2.1.两个容器在同一网段

2.2.两个容器在不同网段


1.Nginx

          Nginx也是一款服务器,我们常用它做如:反向代理、负载均衡、动态与静态资源的分离的工作

 反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
负载均衡:目前大多数的网站都会采用负载均衡手段来针对目前用户的指数级增长来减少对单点服务器的负载压力,比如目前我们拥有3台真实服务器,我们需要根据相应策略决定什么样的用户请求分配到哪个真实服务器,比如按照轮询的方式,用户请求挨个到达代理服务器,此时代理服务器按照第一个请求转发至第一台真实服务器,第二个请求转发到第二个服务器上,依次类推,这样可以防止大量的用户请求全部访问到同一台物理机上,单点物理机的性能始终有限的,当然这可能对服务器数据访问时候造成事务性的失效,在Web方面可能造成Session访问的问题,这不在本文讨论方面内

Nginx+tomcat是目前主流的java web架构

1.2. 安装nginx

搜索nginx镜像

docker search nginx   

拉取镜像

 docker pull nginx 

在宿主机中创建挂载目录

  mkdir -p /data/nginx/{conf,conf.d,html,log}

 注1:因为在nginx镜像中没有安装vi或vim编辑器(安装又太麻烦了),无法编辑nginx配置文件,所以直接通过数据卷挂载上去更加方便
 注2:将nginx配置文件nginx.conf上传到宿主机的挂载目录“/data/nginx/conf”下
 注3:将vue前端项目打包后上传到宿主机的挂载目录“/data/nginx/html”下并解压unzipdist.zip
 注4:nginx配置文件相关调试命令

根据nginx镜像创建nginx容器(测试nginx的安装与访问,并没有发布任何的java或vue项目,最后此容器要删除的)

简单测试nginx镜像
A.使用docker内置网络bridge
docker run \
--name mynginx \
-d -p 80:80 \
nginx:latest

  #登录nginx容器
  docker exec -it mynginx  /bin/bash
   
   B.使用自定义网络mynet ???外部浏览器连接不上
   docker run \
   --name mynginx \
   -d -p 80:80 \
   --net mynet --ip 192.168.0.13 \
   nginx:latest

  

 注1:记得修改centos7的防火墙放开80端口
        开启80端口
        firewall-cmd --zone=public --add-port=80/tcp --permanent

        重启防火墙(不重启以上的设置是不会生效的):
        firewall-cmd --reload

        查询指定端口号是否开启:
        firewall-cmd --query-port=80/tcp

  小结:  mynginx使用docker内置网络bridge,再mynginx添加至mynet中
 

查看本地的容器,可以看到nginx容器已经创建成功了

docker ps 

测试nginx是否安装成功

  打开浏览器输入:http://192.168.183.133( http://宿主机ip:80),正常情况下会显示nginx的欢迎页面

  

2.容器之间相互通信

2.1.两个容器在同一网段

查看docker中已安装的所有网络

docker network ls

查看自定义网络mynet中的配置信息

docker network inspect mynet

启动容器时,指定网络、IP

docker run --name centos1 -itd --net mynet --ip 192.168.0.11 centos:7
docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:7

注1:有些下载的镜像,执行docker run -d 不加-it参数运行后就直接exited(0),这是制作此镜像的基础镜像的问题,添加-itd即可,
例如:centos镜像就要加-itd,nginx镜像则不需要-it,-d即可
注2:在有些镜像启动时,还可以通过-P或-p参数绑定宿主机端口号,例如:nginx镜像,因为容器内部已放开此端口号
注3:停止并删除所有容器

启动容器后检查网络之间是否可以互通

docker exec -it centos1 ping centos2

 

 

 

 2.2.两个容器在不同网段

 使用局域名bridge

docker run --name centos1 -itd centos:latest
docker network inspect bridge

 使用局域网mynet

docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:latest
docker network inspect mynet

测试centos1和centos2的连接

docker exec -it centos1 ping centos2

如果连接失败,控制台出现如下提示

ping: centos2: Name or service not known

解决:向网络mynet中添加容器centos1

docker network connect mynet centos1

为什么成功?

原因:容器centos1具有两个ip
查看网络信息
docker network inspect mynet
查看容器详细信息
docker inspect centos1

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值