zoukankan      html  css  js  c++  java
  • 容器docker网络解析

    如果想要实现两台主机之间相连通信,最直接的办法是找一根网线连起来,
    多台的话需要用网线将他们链接再交换机上。
    
    linux中能够起到虚拟交换机的网络设备是网桥birdge, 工作再链路层,
    主要是根据mac地址将数据包转发到网桥的不同端口。
    
    docker默认创建docker0网桥,凡是链接再docker0上的docker就可以用它来通信了。
    
    而要用容器链接到docker0上需要用到veth pair的虚拟设备。
    
    veth pair的设备特点是:它被创建出来后总是以两张虚拟网卡(veth peer)的形式成对出现的,从其中一个网卡发出的数据包,可以直接出现再与它对应的另一张网卡上,
    哪怕这两张网卡再不同的 network namespace里
    
    所以veth pair常被当做链接不同network namespace的网线一样
    当启动一个容器之后进入到容器内部用 ifconfig可以看到
    容器内部有一张eth0的网卡,它正是veth pair 设备再容器里的这一端;
    
    再容器里用route查看容器路由,
    可以看到凡是再172.17.0.0/16 均会较给主机eth0网卡来处理
    
    而容器的地址是172.17.0.2,属于这个范围内
    
    来到宿主机查看另一端:
    ifconfig可以看到有一个虚拟网卡名字比较长,用 brctl show可以看到这张网卡被插在了
    docker0网桥上
    
    所以容器和宿主机是通过docker0网桥来进行交互的,不同容器之间也是,因为虚拟网卡都是插在docker0上的
  • 相关阅读:
    innodb存储引擎监控
    Oracle 11g DATAGUARD 同步延时监控脚本
    查看表空间的增长情况
    linux上下键,rlwrap来解决
    命令模式彻底删除oracle实例
    oracle 11g 静默安装
    oracle表空间相关统计查询
    11gr2 alert日志中报TNS-12535 TNS-00505原因及解决方法
    ORACLE EXPIRED(GRACE)
    清理监听日志处理的方法
  • 原文地址:https://www.cnblogs.com/tigergaonotes/p/15587373.html
Copyright © 2011-2022 走看看