网络概述

预计阅读时间:3分钟

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

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

本主题范围

本主题并没有进入操作系统的具体细节如何泊坞网络的工作,所以你不会找到有关信息如何泊坞操纵iptables 在Linux或规则,它是如何操纵在Windows服务器上的路由规则,你不会找到码头工人如何形成的详细信息并封装数据包或处理加密。请参阅Docker和iptables

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

网络驱动

Docker的网络子系统可使用驱动程序插入。默认情况下,有几个驱动程序,它们提供核心联网功能:

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

  • host:对于独立容器,请删除容器与Docker主机之间的网络隔离,然后直接使用主机的网络。请参阅 使用主机网络

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

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

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

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

网络驱动程序摘要

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

网络教程

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

网络路由路由网状网覆盖端口