网络驱动程序概述
Docker 的网络子系统是可插拔的,使用驱动程序。默认情况下存在多个驱动程序,并提供核心网络功能:
bridge
:默认网络驱动程序。如果您不指定驱动程序,这就是您正在创建的网络类型。当您的应用程序在需要与同一主机上的其他容器通信的容器中运行时,通常会使用桥接网络。请参阅 桥接网络驱动程序。host
:取消容器与Docker主机之间的网络隔离,直接使用主机的网络。请参阅 主机网络驱动程序。overlay
:覆盖网络将多个 Docker 守护进程连接在一起,并使 Swarm 服务和容器能够跨节点通信。此策略消除了进行操作系统级路由的需要。请参阅 覆盖网络驱动程序。ipvlan
:IPvlan 网络使用户能够完全控制 IPv4 和 IPv6 寻址。 VLAN 驱动程序建立在其之上,使运营商能够完全控制第 2 层 VLAN 标记,甚至为对底层网络集成感兴趣的用户提供 IPvlan L3 路由。请参阅 IPvlan 网络驱动程序。macvlan
:Macvlan 网络允许您为容器分配 MAC 地址,使其在网络上显示为物理设备。 Docker 守护进程通过 MAC 地址将流量路由到容器。macvlan
在处理希望直接连接到物理网络而不是通过 Docker 主机的网络堆栈路由的遗留应用程序时,使用驱动程序有时是最佳选择。请参阅 Macvlan 网络驱动程序。none
:将容器与宿主机及其他容器完全隔离。none
不适用于 Swarm 服务。请参阅 无网络驱动程序。网络插件:您可以通过 Docker 安装和使用第三方网络插件。
网络驱动总结
- 默认桥接网络非常适合运行不需要特殊网络功能的容器。
- 用户定义的桥接网络使同一 Docker 主机上的容器能够相互通信。用户定义的网络通常为属于公共项目或组件的多个容器定义一个隔离的网络。
- 主机网络与容器共享主机的网络。当您使用此驱动程序时,容器的网络不会与主机隔离。
- 当您需要在不同 Docker 主机上运行的容器进行通信时,或者当多个应用程序使用 Swarm 服务协同工作时,覆盖网络是最佳选择。
- 当您从虚拟机设置迁移或需要容器看起来像网络上的物理主机且每个容器都具有唯一的 MAC 地址时,Macvlan 网络是最佳选择。
- IPvlan 与 Macvlan 类似,但不为容器分配唯一的 MAC 地址。当可分配给网络接口或端口的 MAC 地址数量受到限制时,请考虑使用 IPvlan。
- 第三方网络插件允许您将 Docker 与专用网络堆栈集成。
网络教程
现在您已经了解了 Docker 网络的基础知识,请使用以下教程加深您的理解: