docker安装nginx(同一网段与不同网段容器通信)

目录

一、同一网断不同容器通信

1.自定义网络相关命令

① 创建自定义网络

② 创建容器 

③ 有两个互通方式       进入c1容器 输入ping c2

直接在外面p互通 docker exec -it c1 ping c2 

④ network 帮助命令        docker network --help 

⑤ 查看网络中的配置信息        docker network inspect myent(查询哪个网络)

 二、不同网段不同容器的通信

 ① 解决此问题?向网络mynet中添加容器c3

 三、Nginx

 1.Nginx是什么

2.安装Nginx 

 ① 搜索Nginx镜像

② 拉取镜像

 ③ 在宿主机中创建挂载目录

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

⑤ 删除简单测试nginx镜像

四、部署前端项目 

① 先把文件复制到/data/nginx/conf/ 

② 创建nginx容器

③ 把dist.zip复制到data/nginx/html文件里

④ 解压zip        unzip dist.zip

⑤ 下载解压命令        yum install -y unzip

⑥ 就可以直接去访问了 


一、同一网断不同容器通信

# 创建自定义网络

docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet

#创建容器

docker run -di --name c1 --net mynet centos:7

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

docker exec -it c1 ping c2

1.自定义网络相关命令

为了演示效果我把昨天创建的网络删除,如下所示:

① 创建自定义网络

docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet
       参数说明
       --driver bridge  设置网络模式
       --subnet 192.168.0.1/16  设置子网
       --gateway 192.168.0.1 设置网关
       mynet  自定义网络的名称

② 创建容器 

③ 有两个互通方式       进入c1容器 输入ping c2

直接在外面p互通 docker exec -it c1 ping c2 

④ network 帮助命令        docker network --help 

⑤ 查看网络中的配置信息        docker network inspect myent(查询哪个网络)

 二、不同网段不同容器的通信

       #1.使用局域名bridge
        docker run --name centos1 -itd centos:latest
        docker network inspect bridge
        #2.使用局域网mynet
        docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:latest
        docker network inspect mynet    
   
        #3.测试centos1和centos2的连接
        docker exec -it centos1 ping centos2
        #连接失败,控制台出现如下提示
        ping: centos2: Name or service not known

        #4.如何解决此问题呢?向网络mynet中添加容器centos1
        docker network connect mynet centos1

        为什么成功了呢?原因:容器centos1具有两个ip
        #查看网络信息
        docker network inspect mynet
        #查看容器详细信息
        docker inspect centos1

我们测试c3和c2,c1进行连接,是不行的,我这里就显示一个图片,效果都是一样的:

 

 连接失败,控制台出现如下提示:ping: c3: Name or service not known

 ① 解决此问题?向网络mynet中添加容器c3

 

 三、Nginx

 1.Nginx是什么

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

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


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

2.安装Nginx 

 1.搜索nginx镜像
      docker search nginx   
  
    2.拉取镜像
      docker pull nginx 

    3.在宿主机中创建挂载目录
       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”下并解压
               unzip dist.zip
      注4:nginx配置文件相关调试命令可参考附录二
    
    4.根据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中


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

    6.测试nginx是否安装成功
      打开浏览器输入:http://192.168.183.133( http://宿主机ip:80),正常情况下会显示nginx的欢迎页面

 ① 搜索Nginx镜像

docker search nginx

② 拉取镜像

docker pull nginx

 ③ 在宿主机中创建挂载目录

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

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

 简单测试nginx镜像

docker run \
       --name mynginx \
       -d -p 80:80 \
       nginx:latest

⑤ 删除简单测试nginx镜像

四、部署前端项目 

docker实战之通过nginx镜像来部署SPA项目
    nginx+tomcat实现反向代理及均衡
    nginx+html静态服务器

① 先把文件复制到/data/nginx/conf/ 

② 创建nginx容器

docker run \
       --name mynginx \
       -d -p 80:80 \
       -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
       -v /data/nginx/log:/var/log/nginx \
       -v /data/nginx/html:/usr/share/nginx/html \
       nginx:latest

当我们执行这行代码时容易出现的问题,如下图:

在执行效果如下: 

解释没访问的原因: 

由于我们访问的网站的目录是容器内部,所以我们跟这个目录所挂载的宿主机目录就好了

③ 把dist.zip复制到data/nginx/html文件里

我们nginx里面就有内容了。 

④ 解压zip        unzip dist.zip

可能会出现没有这个命令,利用阿里云下载就好了  

⑤ 下载解压命令        yum install -y unzip

⑥ 就可以直接去访问了 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,Docker 默认会为每个容器创建一个独立的网络命名空间,并且容器之间可以通过这个网络命名空间隔离开来。Docker 会在每个容器内部创建一个虚拟网卡,并为每个容器分配一个私有的 IP 地址,这些容器网络上看起来就像是多台独立的机器。因此,在 Docker 中创建的两个容器一定在不同网段。 不过,如果需要的话,你也可以将容器连接到同一个网段中,这样容器之间就可以直接互相通信了。你可以使用 Docker 网络功能来实现这一点,例如使用 `docker network create` 命令创建一个自定义网络,然后使用 `docker network connect` 命令将容器连接到该网络中。 ### 回答2: Docker是一种容器化技术,它可以在操作系统级别上进行虚拟化,使得应用程序及其依赖项可以以容器的形式独立运行。Docker容器可以创建和管理多个容器,并将它们隔离在独立的运行环境中。 对于Docker容器创建,容器可以根据用户的配置位于同一个网段,也可以位于不同网段Docker容器网络配置主要有两种方式,一种是使用Docker的默认网络模式(bridge模式),另一种是使用自定义网络模式。 在默认的bridge网络模式下,当用户创建一个容器时,Docker会为其分配一个唯一的IP地址,并将其添加到Docker宿主机的bridge网桥上。这意味着使用默认网络模式创建的容器会处于同一个网段,它们可以通过IP地址相互访问。但是需要注意的是,由于默认情况下Docker的bridge网桥会进行NAT转发,所以容器之间的通信需要经过网络地址转换。 另外一种方式是使用自定义网络模式。用户可以创建自定义网络,并在容器创建时将其指定为容器网络。在同一个自定义网络中创建的容器会自动获取相同的网段,它们可以直接相互访问而无需进行网络地址转换。 所以,总的来说,Docker创建的两个容器不一定在同一个网段。在默认的bridge网络模式下,它们处于同一个网段,但需要经过NAT转发进行通信。而在自定义网络模式下,容器可以指定不同网段,但在同一个自定义网络中的容器会具有相同的网段,它们可以直接相互访问。最终,容器网络配置取决于用户的设置和需求。 ### 回答3: Docker创建的两个容器不一定在同一个网段Docker默认使用桥接网络模式(bridge mode),每个Docker容器都会被分配一个自己的IP地址,这些IP地址属于同一个网段,例如172.17.0.0/16。但是,如果我们使用自定义网络模式(custom network mode),那么Docker容器可以在不同网段中。 在默认的桥接网络模式下,Docker会使用一个桥接接口(bridge interface),该接口作为宿主机和Docker容器之间的网络连接点。桥接接口的IP地址会作为宿主机和Docker容器默认网关的一部分,在同一个网段中,它们是可达的。 然而,在自定义网络模式下,我们可以通过创建自定义的Docker网络来连接容器。在自定义网络中,每个容器都会分配一个独立的IP地址,并且这些容器可以在不同网段中。当容器不同网段时,它们可以通过网络路由进行通信。这使得我们可以更好地控制和管理容器之间的网络连接。 综上所述,Docker创建的两个容器不一定在同一个网段。在默认的桥接网络模式下,它们处于同一个网段,而在自定义网络模式下,它们可以处于不同网段,通过网络路由进行通信

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值