zoukankan      html  css  js  c++  java
  • 容器虚拟化网络概述

    六种名称空间:

    UTS:主机名和域名

    User:用户

    Mount挂载文件系系统

    IPC:进程间通信

    pid:进程id

    Net:网络

    网络名称空间主要实现“协议栈”和“网络设备”的隔离,一个设备可以单独关联给一个单独的名称空间使用,其他名称空间就看不到这个设备了,这使得每个名称空间都可以配置一个单独的ip与外界通信,

    但是如果网络设备不够为网络设备使用了,我们的内核可以模拟出来一个交换机,并模拟一对接口,一个接到一个名称空间,一个接到交换机,

    docker网络

    docker安装后自动提供三种网络

    [root@localhost ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    1d7c5fcc9190        bridge              bridge              local
    b3ec0cad3ccc        host                host                local
    2c634f206126        none                null                local
    

    bridge表示桥接式网络(net桥)他会在本机之上创建一个纯软件的交换机,叫docker0,既可以扮演交换设备,又可以扮演网卡设备,

    host表示让容器使用宿主机的网络名称空间

    none表示null 表示为空,没有任何网卡,封闭式接口只有lo接口

    [root@localhost ~]# ip a 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:72:1c:ca brd ff:ff:ff:ff:ff:ff
        inet 10.192.45.116/21 brd 10.192.47.255 scope global dynamic enp0s3
           valid_lft 2875sec preferred_lft 2875sec
        inet6 fe80::a00:27ff:fe72:1cca/64 scope link 
           valid_lft forever preferred_lft forever
    3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
        link/ether 02:42:58:26:e8:42 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
        inet6 fe80::42:58ff:fe26:e842/64 scope link 
           valid_lft forever preferred_lft forever
    13: vethcc71d75@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
        link/ether 86:ad:5a:89:e7:46 brd ff:ff:ff:ff:ff:ff link-netnsid 1
        inet6 fe80::84ad:5aff:fe89:e746/64 scope link 
           valid_lft forever preferred_lft forever
    15: vethe5b386c@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
        link/ether 3a:43:31:9c:5b:0f brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet6 fe80::3843:31ff:fe9c:5b0f/64 scope link 
           valid_lft forever preferred_lft forever
    
    

    vethcc71d75@if12和vethe5b386c@if14这两个是我们创建的一对网卡的一半,我们有两个容器,一半在容器里,一半在本机上

    [root@localhost ~]# docker container ls
    CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
    bd141921d661        haoran/httpd:v0.2     "/bin/httpd -f -h /d…"   3 hours ago         Up 3 hours                              t2
    e0f415751ebb        haoran/httpd:v0.1-1   "sh"                     3 hours ago         Up 3 hours                              t1
    

    使用brctl命令就可以看的明白了

    [root@localhost ~]# yum -y install bridge-utils
    [root@localhost ~]# brctl show
    bridge name	bridge id		STP enabled	interfaces
    docker0		8000.02425826e842	no		vethcc71d75
    							vethe5b386c
    

    可以看到docker0关联了两个设备vethcc71d75和vethe5b386c

    每创建一个容器启动并分配ip以后,在主机上会生成一个iptables规则

    [root@iZ2zefbrqggvke1qw0kd0hZ ~]# iptables -t nat -vnL
    Chain POSTROUTING (policy ACCEPT 8020 packets, 581K bytes)
     pkts bytes target     prot opt in     out     source               destination         
      274 17427 MASQUERADE  all  --  *      !docker0  172.18.0.0/16        0.0.0.0/0       
    

    *从任何接口进来

    !docker0只要不从docker0进来

    原地址来个172.18.0.0/16这个网段的

    0.0.0.0/0 无论到达任何主机

    MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。

  • 相关阅读:
    Spring配置文件中使用ref local与ref bean的区别
    基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务
    Spring事务配置的五种方式
    [codeforces-543B]bfs求最短路
    [hdu5218]DP-约瑟夫环变形
    [hdu5215]无向图找奇偶环
    [hdu5216]排序
    [zoj3591]Nim 游戏
    [zoj3596]DP(BFS)
    [zoj3593]扩展欧几里得+三分
  • 原文地址:https://www.cnblogs.com/hao-ran/p/11493893.html
Copyright © 2011-2022 走看看