docker之自定义网络

  1. 简介
    建议使用用户定义的网桥来控制哪些容器可以相互通信,以及启用容器名称到IP地址的自动DNS解析。
  2. 查看所有的Docker网络
    命令:docker network ls
  3. 网络模式解释

    1)bridge :桥接 docker(默认),一般我们创建网络也使用桥接模式

    2)host :和宿主机共享网络

    3)none :不配置网络

    4)container:容器网络连通(用的少!局限很大!)

  4. 启动容器命令解释
    1)我们直接启动命令,有默认的参数,只是省略掉了 --net bridge,而这个就是我们的docker0
          docker run -d -P --name tomcat01 tomcat
           上面的命令等同于下面的启动容器命令
          docker run -d -P --name tomcat01 --net bridge tomcat
  5. 自定义创建一个网络
    1)命令:
           docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
           解释:
               --driver bridge 表示使用桥接模式
               --subnet 192.168.0.0/16 表示子网ip 可以分配 192.168.0.2 到 192.168.255.255
               --gateway 192.168.0.1 表示网关,就是路由器
               mynet- 网络名
            注意:
                    192.168.0.0/16:表示网络码占16位,也就是说该网络上只可以有65534个主机(2^16-2)IP范围:192.168.0.1~192.168.255.254 192.168.255.255是广播地址,
             不能被主机使用。设置IP地址的时候:192.168.x.y 子网掩码:255.255.0.0
    2)执行上面的命令
          
    3)查看我们刚刚自定义的网络
          命令:docker network inspect mynet
           
    4)下面我们启动容器并且指定使用我们刚刚创建的网络
           
    5)我们再次查看网络信息
          命令:docker network inspect mynet
           
    6)下面我们直接使用两个容器进行ping一下,测试是否能够连接
          
           我们再次使用mytomcat01去连接mytomcat02
            
           可以发现我们使用自定义的网络,容器直接网络都是可以互通的(可以使用容器名称,也可以使用ip地址),它修复了docker0所不完善的地方,我们不需要再使用--link了。
    7)小节:
          a:不同集群可以使用不同网络,保证集群的健康和安全,比如我们搭建一个mysql集群和一个redis集群,那么我们就自定义两个网络即可
          b:  自定义网络已经维护好了对应的关系,方便使用服务名通讯
  6. 网络连通
     1)简介
            上面我们创建了两个容器mytomcat01和mytomcat02,它们指定的都是我们自定义的网络mynet,那么我们如何让它们和不同网络的容器链接呢?
         比如我们先又创建两个容器mytomcat03和mytomcat04,我们指定这两个容器属于默认的docker0网络,那么我们如何让mytomcat03可以ping通mytomcat01呢? 
     2)首先创建mytomcat03和mytomcat04容器
            
           
           
          可以发现它们的网段都不一样:
             mytomcat01和mytomcat03属于:192.168.0.x
              mytomcat01和mytomcat03属于:172.17.0.x
     3)下面我们测试使用mytomcat01去ping通mytomcat03
           
     4)解决的办法(我们要做的其实是将容器和网络(比如我们自定义的mynet)链接,不是docker0和网络链接):
            命令:docker network connect 网络名词 容器id
            例如打通mytomcat03和mynet的网络
               
             我们在通过docker network inspect mynet查看一下网络情况:
             
            我们发现mytomcat03在mynet网络中也出现了一个新的ip地址,说明mytomcat03在docker0中有一个ip,在mynet中也有一个ip地址,
            这就是一个容器两个ip地址。类似于我们的阿里云服务器有一个公网ip和一个私网ip 
     5)那么我们再使用mytomcat01去链接一下mytomcat03试一下
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值