网络驱动

Docker 的网络子系统是可插拔的,使用驱动程序。默认情况下存在多个驱动程序,并提供核心网络功能:

  • bridge: 默认网络驱动。如果您未指定驱动,则这是您正在创建的网络类型。桥接网络通常用于应用程序在需要与同一主机上的其他容器通信的容器中运行时。 请参阅 桥接网络驱动

  • host: 移除容器与 Docker 主机之间的网络隔离,并直接使用主机的网络。 请参阅 主机网络驱动程序

  • overlay: 覆盖网络将多个Docker守护进程连接在一起,并使Swarm服务和容器能够在节点之间进行通信。这种策略消除了进行操作系统级别路由的需要。 请参阅 覆盖网络驱动程序

  • ipvlan: IPvlan网络赋予用户对IPv4和IPv6地址的完全控制权。VLAN驱动在此基础上进一步赋予操作员对第二层VLAN标记的完全控制,甚至包括对希望进行底层网络集成的用户的IPvlan第三层路由。 参见 IPvlan网络驱动

  • macvlan: Macvlan 网络允许您为容器分配一个 MAC 地址, 使其看起来像网络上的物理设备。Docker 守护进程 根据容器的 MAC 地址路由流量。在处理那些 期望直接连接到物理网络而不是通过 Docker 主机的网络堆栈路由的遗留应用程序时, 使用 macvlan 驱动程序有时是最佳选择。 请参阅 Macvlan 网络驱动程序

  • none: 完全隔离容器与主机及其他容器。 none 不可用于 Swarm 服务。 参见 None 网络驱动

  • 网络插件:您可以在 Docker 中安装和使用第三方网络插件。

网络驱动摘要

  • 默认桥接网络适用于运行不需要特殊网络功能的容器。
  • 用户定义的桥接网络使同一Docker主机上的容器能够相互通信。用户定义的网络通常为属于同一项目或组件的多个容器定义一个隔离的网络。
  • 主机网络与容器共享主机的网络。当您使用此驱动程序时,容器的网络不会与主机隔离。
  • 当您需要在不同的 Docker 主机上运行的容器进行通信,或者当多个应用程序使用 Swarm 服务协同工作时,覆盖网络是最佳选择。
  • Macvlan 网络最适合用于从虚拟机设置迁移,或者需要让您的容器在网络中看起来像物理主机的情况,每个容器都有唯一的 MAC 地址。
  • IPvlan 与 Macvlan 类似,但不会为容器分配唯一的 MAC 地址。当网络接口或端口可分配的 MAC 地址数量有限制时,可以考虑使用 IPvlan。
  • 第三方网络插件允许您将 Docker 与专用网络堆栈集成。

网络教程

既然您已经了解了Docker网络的基础知识,可以通过以下教程加深您的理解: