zoukankan      html  css  js  c++  java
  • docker网络

    docker网络

    理解docker0

    容器运行时若没有指定网络,则由docker0给容器分配ip地址

    主机可以ping通容器

    原理

    1.我们每启动一个docker容器,docker就会给我们的容器分配一个ip地址,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术
    2.在每开启运行一个容器,就会增加一对儿对应的网卡

     evth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连,正因为有这个特性,evth-pair充当一个桥梁,专门连接各种虚拟网络设备
    

    3.容器和容器之间是可以互相ping通的

    tomcat01和tomcat02是公用的一个路由器即docker0。 所有的容器在不指定网络的情况下,都是docker0路由的,docker0会给我们的 容器分配一个默认的可用ip

    小结

      Docker使用的是Linux的桥接,宿主机zhong是一个Docker容器的网桥docker0
      docker中的所有网络接口都是虚拟的,虚拟的转发效率高
      只要容器删除,对应网桥也会自动删除
    
      思考一个场景,我们编写了一个微服务,database url=ip 项目不重启,数据库ip掉了,我们希望可以处理这个问题,可不可以用名字来访问?
    


    #其实是这个tomcat03在本地配置了tomcat02,但是tomcat02没有配置tomcat03

    –link:就是在host配置中增加了一个tomcat02的映射
    我们现在玩Docker已经不建议使用–link了
    我们玩的是自定义网络,因为docker0不支持容器名连接访问
    

    自定义网路

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

    root@qsrobot:~# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    5f631a837d3c        bridge              bridge              local
    eea50a6cf976        host                host                local
    af018e231f6c        mynet               bridge              local
    f033a8a6ae9b        none                null                local
    

    用自己定义的网络 搭建

    docker run -d -P --name tomcat-net01 --net mynet tomcat
    docker run -d -P --name tomcat-net02 --net mynet tomcat

    发现mynet多了两个容器

    现在不使用--link,两个tomcat容器也可以相互ping通,修复了docker0的一些缺陷

    自定义网络的好处

      不同的集群使用不同的网络,保证集群的网络是安全健康的
    

    网络连通

      查找网络连通命令
    

      现在有两组容器,蓝色的是docker0网络,红色的mynet网络  两个网络网段不同无法ping通
    

      通过docker network connect mynet tomcat_docker01 将容器和网络打通
    

      实际上就是将tomcat_docker01容器放到了mynet网络中,也就是一个容器两个IP,类似阿里云的公网IP 和 私网IP
    

      docker inspect tomcat_docker01查看容器信息
    

    发现一个容器两个ip

  • 相关阅读:
    Redis慢查询日志
    Docker:容器
    CentOS7.X中使用yum安装nginx
    Nginx简介及配置详解(二)
    Nginx简介及配置详解(一)
    Redis持久化策略
    golang学习笔记——异常
    golang学习笔记——面向对象(接口)
    golang学习笔记——面向对象(方法)
    golang学习笔记——struct结构体
  • 原文地址:https://www.cnblogs.com/lvshuizhicheng/p/14395512.html
Copyright © 2011-2022 走看看