Docker 引擎能够原生支持桥接网络(bridge networks)和覆盖网络(overlay networks)。

桥接网络被限制用于一个独立主机运行的 Docker 引擎。覆盖网络能够包含有多个主机,这个有更多的高级特性。

下面的例子显示了如何创建一个桥接网络:

$ docker network create -d bridge my_bridge



参数 -d 用于告诉 Docker 在新的网络中使用 桥接(bridge) 驱动。

名字 bridge 是默认使用的网络名字,在创建的时候可以不指定这个参数,那么将会使用默认的网络名字来创建。

docker启动桥接 docker 桥接网络_virtualbox 创建桥接网络

当你创建成功后,可以使用下面的命令来查看你机器中的网络配置:

$ docker network ls

NETWORK ID          NAME                DRIVER
7b369448dccb        bridge              bridge
615d565d498c        my_bridge           bridge
18a2866682b8        none                null
c288470c46f6        host                host

如果你使用下面的命令检查网络的话,你会看到在这里面没有任何内容。

$ docker network inspect my_bridge

[
    {
        "Name": "my_bridge",
        "Id": "5a8afc6364bccb199540e133e63adb76a557906dd9ff82b94183fc48c40857ac",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "10.0.0.0/24",
                    "Gateway": "10.0.0.1"
                }
            ]
        },
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

docker启动桥接 docker 桥接网络_virtualbox 创建桥接网络

桥接网络的情况,请参考上图的配置。

Docker 强大的原因之一在于多个 Docker 容器之间的互相连接。涉及到连接,就引出了网络通信的几种模式。Docker 默认提供了 5 种网络驱动模式。

  • bridge: 默认的网络驱动模式。如果不指定驱动程序,bridge 便会作为默认的网络驱动模式。当应用程序运行在需要通信的独立容器 (standalone containers) 中时,通常会选择 bridge 模式。
  • host:移除容器和 Docker 宿主机之间的网络隔离,并直接使用主机的网络。host 模式仅适用于 Docker 17.06+。
  • overlay:overlay 网络将多个 Docker 守护进程连接在一起,并使集群服务能够相互通信。您还可以使用 overlay 网络来实现 swarm 集群和独立容器之间的通信,或者不同 Docker 守护进程上的两个独立容器之间的通信。该策略实现了在这些容器之间进行操作系统级别路由的需求。
  • macvlan:Macvlan 网络允许为容器分配 MAC 地址,使其显示为网络上的物理设备。Docker 守护进程通过其 MAC 地址将流量路由到容器。对于希望直连到物理网络的传统应用程序而言,使用 macvlan 模式一般是最佳选择,而不应该通过 Docker 宿主机的网络进行路由。
  • none:对于此容器,禁用所有联网。通常与自定义网络驱动程序一起使用。none 模式不适用于集群服务。