Docker容器网络篇

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.Docker的网络模型概述

Docker容器网络篇

如上图所示,Docker有四种网络模型:
  封闭式网络(Closed container):
    封闭式容器,只有本地回环接口(Loopback interface,和咱们服务器看到的lo接口类似),无法与外界进行通信。

  桥接式网络(Bridge container A):
    桥接容器,除了有一块本地回环接口(Loopback interface)外,还有一块私有接口(Private interface)通过容器虚拟接口(Container virtual interface)连接到桥接虚拟接口(Docker bridge virtual interface),之后通过逻辑主机接口(Logical host interface)连接到主机物理网络(Physical network interface)。
    桥接网卡默认会分配到172.
17.0.0/16的IP地址段。
    如果我们在创建容器时没有指定网络模型,默认就是(Nat)桥接网络,这也就是为什么我们在登录到一个容器后,发现IP地址段都在172.17.0.0/16网段的原因啦。   联盟式网络(Joined container A
| Joined container B):     每个容器都各有一部分名称空间(Mount,PID,User),另外一部分名称空间是共享的(UTS,Net,IPC)。由于他们的网络是共享的,因此各个容器可以通过本地回环接口(Loopback interface)进行通信。除了共享同一组本地回环接口(Loopback interface)外,还有一块一块私有接口(Private interface)通过联合容器虚拟接口(Joined container virtual interface)连接到桥接虚拟接口(Docker bridge virtual interface),之后通过逻辑主机接口(Logical host interface)连接到主机物理网络(Physical network interface)。   
  开放式容器(Open container):     比联盟式网络更开放,我们知道联盟式网络是多个容器共享网络(Net),而开放式容器(Open contaner)就直接共享了宿主机的名称空间。因此物理网卡有多少个,那么该容器就能看到多少网卡信息。我们可以说Open container是联盟式容器的衍生。     

 

二.容器虚拟化网络概述

1>.查看docker支持的网络模型

[root@node102.yinzhengjie.org.cn ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
33d001d8b94d        bridge              bridge              local      #如果我们创建一个容器式未指定网络模型,默认就是桥接式网络哟~
9f539144f682        host                host                local
e10670abb710        none                null                local
[root@node102.yinzhengjie.org.cn ~]# 
[root@node102.yinzhengjie.org.cn ~]# 

2>.查看桥接式网络元数据信息

[root@node102.yinzhengjie.org.cn ~]# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "33d001d8b94d4080411e06c711a1b6d322115aebbe1253ecef58a9a70e05bdd7",
        "Created": "2019-10-18T17:27:49.282236251+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",      #这里就是默认的桥接式网络的网段地址,既然式默认那自然式可以修改的。
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",      #看这里,告诉咱们bridge默认的网卡名称为"docker0"
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
[root@node102.yinzhengjie.org.cn ~]# 

 

三.使用ip命令网络名称空间(netns)来模拟容器间通信

1>.查看帮助信息

[root@node101.yinzhengjie.org.cn ~]# rpm -q iproute
iproute-4.11.0-14.el7.x86_64
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# ip netns help      #注意:当我们使用ip命令去管理网络名称时,其它名称都是共享的,这和容器所说的六个名称空间都是隔离的有所不同哟~
Usage: ip netns list
       ip netns add NAME
       ip netns set NAME NETNSID
       ip [-all] netns delete [NAME]
       ip netns identify [PID]
       ip netns pids NAME
       ip [-all] netns exec [NAME] cmd ...
       ip netns monitor
       ip netns list-id
[root@node101.yinzhengjie.org.cn ~]#

2>.添加2个网络名称空间

[root@node103.yinzhengjie.org.cn ~]# ip netns add r1              #添加一个r1网络名称空间
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# ip netns add r2
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# ip netns list                                     #查看已经存在的网络名称空间列表
r2
r1
[root@node103.yinzhengjie.org.cn ~]# 
[root@node103.yinzhengjie.org.cn ~]# ip netns add r1              #添加一个r1网络名称空间 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-16
  • 2021-08-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
猜你喜欢
  • 2021-07-19
  • 2022-12-23
  • 2021-11-12
  • 2021-07-11
  • 2021-12-28
相关资源
相似解决方案