Docker 引擎能够原生支持桥接网络(bridge networks)和覆盖网络(overlay networks)。
桥接网络被限制用于一个独立主机运行的 Docker 引擎。覆盖网络能够包含有多个主机,这个有更多的高级特性。
下面的例子显示了如何创建一个桥接网络:
$ docker network create -d bridge my_bridge
参数 -d 用于告诉 Docker 在新的网络中使用 桥接(bridge) 驱动。
名字 bridge 是默认使用的网络名字,在创建的时候可以不指定这个参数,那么将会使用默认的网络名字来创建。
当你创建成功后,可以使用下面的命令来查看你机器中的网络配置:
$ 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 容器之间的互相连接。涉及到连接,就引出了网络通信的几种模式。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 模式不适用于集群服务。
领取专属 10元无门槛券
私享最新 技术干货