美文网首页
Docker源码学习进度(5)

Docker源码学习进度(5)

作者: speakspeak | 来源:发表于2019-07-06 22:36 被阅读0次

    1.网络基础

    linux 命令

    ①ip netns add ns1       创建一个网络Namespace

    ②ip link add vech0 type vech peer name vech1  用于创建虚拟网络设备

    ③ip link set vech0 netns ns1   将网络设备放入Namespace中

    ④ip netns exec ns1 ifconfig vech0 172.18.0.2/24 up 

    配置网络设备地址

    ⑤ip netns exec ns1 route add default(目的ip) dev vech0(发往的目的)

    其中default表示0.0.0.0,就是网络中的所有主机

    表示所有的网络设备都经过vech0,

    添加路由是什么意思.

    在一个Net Namespace下,必然有一个路由器, 而添加路由指的是

    将Namespace的目的ip发往目的

    ⑥brch1 addbr br0  创建网桥

    ⑦brch1 addif br0 ech0  将设备放入网桥

    2.NET的实现

    ①type Network struct {

    Name string                    //网络名,例如testbridgenet

    IpRange *net.IPNet        //网络的IP地址

    Driver string                    //网络驱动名, 例如Bridge.

    }

    type Endpoint struct {

    ID string `json:"id"`                               //这个ID是关于container的ID

    Device netlink.Veth `json:"dev"`           //

    IPAddress net.IP `json:"ip"`                 //这个是端口的IP

    MacAddress net.HardwareAddr `json:"mac"            //`端口的MAC地址

    Network    *Network                                                 //连接的网络

    PortMapping []string                           //Port maping 的方式

    }

    ②dump与load

        主要功能为将Network结构写入到文件中,以及将文件中的内容写入到Network中.

    ③CreateNetwork

        ①通过net.ParseCIDR将subnet转化为net.IPNet的对象

        ②通过IPAM分配网关IP

        ③将前面创建的IPNet的IP设置为分配的IP

        ④调用drive的Create创建一个wetwork.

    ④Connect

        ①为容器创建IP地址。

        ②为容器创建一个Endpoint

        ③将endPoint与network相连

    3.IPAM的实现

    4.Bridge的实现

    相关文章

      网友评论

          本文标题:Docker源码学习进度(5)

          本文链接:https://www.haomeiwen.com/subject/acqycctx.html