• blackpiglet
    2018-11-10
    看到有位同学问怎么找 docker 和 宿主机上 veth 设备的关系,学完后我也有这个疑问,查了一下,结论是没有命令可以直接查到。但是可以查看 container 里的 eth0 网卡的 iflink 找到对应关系。
    # 宿主机上
    $ ip link
    ......
    9: veth0e9cd8d@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
        link/ether 6a:fb:59:e5:7e:da brd ff:ff:ff:ff:ff:ff link-netnsid 1

    # 容器内
    $ sudo docker exec -it e151 bash
    root@e1517e9d9e1a:/# cat /sys/class/net/eth0/iflink
    9

    这样就可以确定 container e1517e9d9e1a 在物理机上对应的 veth pair 是 veth0e9cd8d 了。

    这种方式需要登录到 docker 里执行命令,不是所有的容器都能这么做,不过 github 上有人专门做了个脚本来用实现这个功能,可以参考一下:
    https://github.com/micahculpepper/dockerveth
    展开
     1
     51
  • frankji
    2018-11-11
    当一个容器试图连接到另外一个宿主机时,比如:ping 10.168.0.3,它发出的请求数据包,首先经过 docker0 网桥出现在宿主机上。宿主机再把这个ping包发送出去之前会做源nat转换,把源ip改成宿主机的ip。大家可以分别在docker0和宿主机的真实网卡上tcpdump 抓包看一下。在宿主机用iptables -L -t nat就能看到相应的规则。
     1
     17
  • pytimer
    2018-11-05
    使用host网络的话,应该要提前规划好每个服务应该使用的端口吧
    
     12
  • Yuki_YANG
    2018-11-05
    文中"通过 ifconfig 命令的输出,你可以看到,nginx-1 容器对应的 Veth Pair 设备, 在宿主机上是一张虚拟网卡。它的名字叫作veth9c02e56"
    请问下是用哪个命令看出来的, 貌似route, ifconfig, brctl, 找不到这个对应关系呢



    展开
    
     6
  • 饭粒
    2019-05-08
    nginx 内的ifconfig可以在容器内安装。
    # apt-get update
    # apt install net-tools
     2
     5
  • Brave Shine
    2019-09-03
    【简化版】
    找 docker 和 宿主机上 veth 设备的关系
    - 容器
    ip netns exec netns1(network namespaces) ethool -S veth1
    找到这个字段:
    NIC statistics:
      peer_ifindex: 5(序列号)

    - 宿主机
    ip netns exec netns2 ip link | grep 5 <- 序列号

    结果:veth0
    展开
    
     4
  • kissingers
    2018-11-12
    查看veth 对端接口还有一个办法:用 ethtool -S <NIC>,输出结果有一项peer_inindex,再在host 上用ip link show,可以对应到。
    
     4
  • loda
    2018-11-05
    请教个问题,默认情况两台主机的docker0无法互通,那么如果在这两台机器上配置了路由规则,将docker0的数据转发到eth0,两台机器通过网线或者交换机相连,这样是不是可以保证不用引入overlay network,容器之间也能互通

    作者回复: 当然可以。但这还是overlay,只是没用隧道。

     2
     4
  • Eurica
    2018-11-05
    请问老师:docker0网桥和普通的linux网桥在实现上有什么区别吗?
    
     4
  • gl328518397
    2019-03-24
    nginx镜像没有ifconfig 这些命令吧?
    
     3
  • 程空万里
    2019-01-09
    张老师对网络的讲解实在是太棒了,棒在并不使用高深的网络词语,那些高深的网络词语让人不知所述,头晕转向的,而是用最直白的讲话式加上配图来讲解,一看就懂,太喜欢了!少留言的我,都忍不住写留言!

    作者回复: 那就多留言哈

    
     3
  • kissingers
    2018-11-08
    docker0网桥有没有dhcp 功能?主机上的容器访问外网没有NAT?主机网卡没连到docker0?

    作者回复: 静态IP。访问外网为什么要NAT。同主机两张网卡要用什么连。

    
     3
  • Devil May Cry.S...
    2018-12-20
    老师,你好,我想问个问题
    docker的这个网络 vethpair网卡 ip是怎么来的么?
    我无意发现 ,vethpair的ip都是之前都是172网段, 今天发现有个192的物理ip 居然访问不通了,,然后就发现 docker里面的 ip除了172网段 居然还有192网段,所以与物理192网段的路由表有冲突了
    docker里面这个我用的都是默认网桥模式,这个vethpare 的ip到底怎么来的,难道不是从docker0的网桥上创建出来的么。
    
     2
  • kissingers
    2018-11-10
    老师,容器1访问容器2,直接docker0网桥根据转发表转发就行了,怎么还有先到docker0接口,路由选择,再回到docker0转发的过程?访问外网时才会有到docker0这个网关,再路由出去的过程吧?

    作者回复: 对。这里其实都在二层ebtables处理的。我修改一下。

    
     2
  • 虎虎❤️
    2018-11-05
    用host网络需要平台能够自动分配端口,避免冲突。并且application可以通过比如环境变量动态配置端口信息。
    
     2
  • fiisio
    2018-11-05
    容器里面应该是veth 不是 eth吧?
    
     2
  • 彬哥
    2019-12-23
    在k8s的node 上看到两个bridge:
    [root@iZbp199519zhaqjop2eeueZ ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    cni0        8000.0a58ac140101    no        veth0982eb93
                                veth1ebba82a
                                veth25fd7752
                                veth2963c093
                                veth2f243ddd
                                veth319b6524
                                veth3c36e5f4
                                veth4554e1b9
                                veth4ccc7ce2
                                veth72769145
                                veth72fb8dcc
                                veth8b3290bf
                                veth98697671
                                vethd9a36cf2
                                vethf2f528fc
    docker0        8000.024284d8b746    no
    展开
    
     1
  • FW _UI
    2018-12-04
    有用mac的吗?在mac里docker run -d --name nginx-v2 nginx, docker exec -it nginx-v2 /bin/bash
    里没有ifconfig ipconfig, netstat -ns这样的命令,查了一下,mac上docker运行在虚拟机里,不用docker-0网桥
    所以想问一下:MAC里如何理解docker的网络?
    难道要搞虚拟机吗?
    展开
    
     1
  • silver
    2018-11-05
    当容器试图连接到别的宿主机时,容器的连接具体怎么被route到宿主机的eth0的呢?根据前文对“从设备”的描述,这些请求不是应该全被直接转发到了docker0上吗
    
     1
  • Dale
    2020-02-01
    生产环境使用HostNetwork,因为复用宿主机的网络,所有服务端口提前需要规划好,不能出现冲突。
    
    
我们在线,来聊聊吧