Docker 网络

概要:

Docker容器和服务是如此强大的原因之一是你可以将它们连接在一起,或者将它们连接到非Docker工作负载。Docker容器和服务不需要关心它们是部署在Docker上,也不需要关心它们的对等端是否也是Docker。无论你的Docker主机是运行linux,windows,还是两者兼有,你都可以使用与平台无关的方式管理它们。

本主题定义了一些基本的Docker网络概念,以便您使用Docker设计和部署应用程序时能够充分利用这些功能。

大部分内容适用于所有Docker安装。 但是,一些高级功能仅适用于Docker EE客户。

本主题的范围

本主题不会深入到Docker网络在特定的操作系统如何工作,因此你无法找到有关Docker如何操作Linux上的iptables规则或者如何操作Windows服务器上陆游规则的内容,
如果像深入研究,请看Docker and iptables 和 Docker Reference Architecture: Designing Scalable, Portable Docker Container Networks 。
此外,本主题未提供有关如何创建,管理和使用Docker网络的任何教程。 每个部分都包含指向相关教程和命令参考的链接。

网络驱动程序

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

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

host: 对于独立容器,删除容器和Docker主机之间的网络隔离,并直接使用主机的网络。 host仅适用于Docker 17.06及更高版本的swarm服务。 请参阅使用主机网络。

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

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

none: 对于此容器,禁用所有网络。 通常与自定义网络驱动程序一起使用。 none不适用于群组服务。 请参阅禁用容器网络。

Network plugins: 您可以使用Docker安装和使用第三方网络插件。 这些插件可从Docker Hub或第三方供应商处获得。 有关安装和使用给定网络插件的信息,请参阅供应商的文档。

网络驱动摘要

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

你可能感兴趣的:(Docker 网络)