Networking overview

预计阅读时间:3分钟

Docker 容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连接到非 Docker 工作负载. Docker 容器和服务甚至不需要知道它们部署在 Docker 上,或者它们的对等点是否也是 Docker 工作负载. 无论您的 Docker 主机运行 Linux、Windows 还是两者的混合,您都可以使用 Docker 以与平台无关的方式管理它们.

本主题定义了一些基本的 Docker 网络概念,并让您准备好设计和部署应用程序以充分利用这些功能.

Scope of this topic

本主题涉及有关 Docker 网络如何工作的特定于操作系统的详细信息,因此您将找不到有关 Docker 如何在 Linux 上操作iptables规则或它如何在 Windows 服务器上操作路由规则的信息,您也不会找到有关 Docker 如何操作的详细信息形成和封装数据包或处理加密. 请参阅Docker 和 iptables .

此外,本主题不提供任何有关如何创建、管理和使用 Docker 网络的教程. 每个部分都包含相关教程和命令参考的链接.

Network drivers

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

  • bridge :默认的网络驱动程序. 如果您未指定驱动程序,则这是您正在创建的网络类型. 当您的应用程序在需要通信的独立容器中运行时,通常会使用桥接网络. 请参阅桥接网络.

  • host :对于独立容器,去掉容器和 Docker 主机之间的网络隔离,直接使用主机的网络. 请参阅使用主机网络.

  • overlay :覆盖网络将多个 Docker 守护进程连接在一起,使 swarm 服务能够相互通信. 您还可以使用覆盖网络来促进 swarm 服务和独立容器之间的通信,或者不同 Docker 守护程序上的两个独立容器之间的通信. 这种策略消除了在这些容器之间进行操作系统级路由的需要. 请参阅覆盖网络.

  • ipvlan :IPvlan 网络让用户可以完全控制 IPv4 和 IPv6 寻址. VLAN 驱动程序建立在此之上,为对底层网络集成感兴趣的用户提供了对第 2 层 VLAN 标记甚至 IPvlan L3 路由的完全控制. 请参阅IPvlan 网络.

  • macvlan :Macvlan 网络允许您将 MAC 地址分配给容器,使其显示为网络上的物理设备. Docker 守护进程通过它们的 MAC 地址将流量路由到容器. 在处理期望直接连接到物理网络而不是通过 Docker 主机的网络堆栈路由的遗留应用程序时,使用macvlan驱动程序有时是最佳选择. 请参阅Macvlan 网络.

  • none :对于这个容器,禁用所有网络. 通常与自定义网络驱动程序一起使用. none不适用于 swarm 服务. 请参阅禁用容器网络.

  • 网络插件:您可以通过 Docker 安装和使用第三方网络插件. 这些插件可从Docker Hub或第三方供应商处获得. 请参阅供应商的文档以安装和使用给定的网络插件.

Network driver summary

  • 当您需要多个容器在同一个 Docker 主机上进行通信时,用户定义的桥接网络是最佳选择.
  • 当网络堆栈不应该与 Docker 主机隔离时,主机网络是最好的,但您希望容器的其他方面被隔离.
  • 当您需要在不同 Docker 主机上运行的容器进行通信时,或者当多个应用程序使用 swarm 服务一起工作时,覆盖网络是最佳选择.
  • 当您从 VM 设置迁移或需要容器看起来像网络上的物理主机时, Macvlan 网络是最佳选择,每个主机都有唯一的 MAC 地址.
  • 第三方网络插件允许您将 Docker 与专门的网络堆栈集成.

Networking tutorials

现在您已经了解了有关 Docker 网络的基础知识,请使用以下教程加深您的理解:

networking, bridge, routing, 路由网格, overlay, ports

by  icopy.site