docker 网络模式概述

一、概述

     docker容器间通过网络互联,是使得docker容器与服务功能强大的原因之一,通过网络可将docker工作容器或者服务相互连接,或者将他们连接到一个没有分配工作任务的管理结点上,容器和服务甚至不用知道他们是否被部署在一个docker任务结点或者非任务结点上,也不用关心其他容器或者服务的部署情况,甚至不用关心是否运行在宿主机器上,以及运行环境是否为一个Linux系统或者windows系统,平台无关性,极大提高了使用的方便性,用户仅需关心很少一部分重要配置信息。

二、docker 网络模式

    docker 的网络子系统是一个可插拔的插件模块。采用驱动提供核心的网络功能。docker的网络模式有如下几种 网桥(bridge)、主机模式(host)、覆盖模式(overlay)、地址模式(macvlan)、插件。

2.1 bridge

   网桥模式是docker 默认的网络模式,如果未指定驱动类型(docker 启动时指定特定网络参数 ),则默认创建使用该网络类型,该模式适用于应用程序运行于独立的容器,但容器需要与外部网络或者容器间需要交互。

2.2 host

  对于独立的容器,如果需要删除容器与宿主设备间的隔离,可直接使用该种模式,该模式仅适用于docker版本在17.06及高版本的集群服务中。

2.3 overlay

      overlay 该模式,使得连接多个docker daemon(docker 服务端)、并使得它们相互通信,该模式允许用户 连通覆盖一个集群网络和一个独立的容器,或者分布在两个docker daemon上的容器。该模式消息了同容器之间进行系统级别的路由操作。

2.4 macvlan

macvlan 分配容器一个地址,使得容器变成一个实际物理设备,docker deamon根据mac地址,将通信路由到具体容器。当我们应用程序需要直接访问网络,而不是通过宿主机器时,使用这种模式是最佳的选择。

2.5 Network plugin

  用户可通过安装第三方网络插件方式来使用docker, 通常可从 Docker Store 或者 第三方供应商文档中获取

2.6 none

该网络模式的容器,禁用了所有网络,这通常与自定义的网络驱动一起使用, none 模式无法适用于 集群服务。

三、如何查看和配置网络模式

虽然存在如此多的网络模式,那么如何看一个容器的网络模式呢?

docker  inspect <容器ID>

找到 NetworkingSettings 下的  Networks 即可查看当前容器的容量模式、我本机适用默认的网络模式

 },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "ba23ba00fcc94a675f849b28d490c7fe0a64ae1a99fb7eb492f8edb2a57cec33",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/ba23ba00fcc9",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "f728c8af07e3631edbfd852e657c8e2d20e4ce71ec3230b4570955b9af395635",
            "Gateway": "192.168.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "192.168.0.2",
            "IPPrefixLen": 20,
            "IPv6Gateway": "",
            "MacAddress": "02:42:c0:a8:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "06f22137c7f98814217a62ad20d9e6d197adb57533ba47f312f9229cdc0fe06b",
                    "EndpointID": "f728c8af07e3631edbfd852e657c8e2d20e4ce71ec3230b4570955b9af395635",
                    "Gateway": "192.168.0.1",
                    "IPAddress": "192.168.0.2",
                    "IPPrefixLen": 20,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:c0:a8:00:02",
                    "DriverOpts": null
                }
            }

总结:

     当需要多个容器在同一个Docker主机上进行通信时,最好使用桥接网络。

    host 模式适用于容器需要取消与宿主机器间的网络堆栈隔离,但容器内的其它部分仍需要隔离。

     overlay 模式适用于,当需要使用多个docker daemon上的容器,或者使用集群服务运行程序。

    macvlan 模式适用于将容器 从 VM(虚拟设备) 环境中迁出,或者让容器成为网络中具体的节点,容器配置唯一的mac地址。

   Network plugin  允许用户在docker中使用特定的网络堆栈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值