BenjaminYang In solitude, where we are least alone

docker从零开始网络(一)概述

概述

预计阅读时间: 4分钟

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

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

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

本主题的范围

本主题并没有进入操作系统的具体细节如何泊坞网络的工作,所以你不会找到码头工人如何操纵信息iptables 在Linux上的规则或如何操纵Windows服务器上的路由规则,你不会找到码头工人如何形成的详细信息并封装数据包或处理加密。请参阅Docker和iptables 以及 Docker参考架构:设计可扩展的便携式Docker容器网络, 以获得更深入的技术细节。

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

网络驱动程序

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

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

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

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

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

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

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

网络驱动选择

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

Docker EE网络功能

只有在使用Docker EE并使用通用控制平面(UCP)管理Docker服务时,才能实现以下两个功能:

  • HTTP路由网格 可以让你分享多个服务之间的相同的网络IP地址和端口。根据客户端的请求,UCP使用主机名和端口的组合将流量路由到适当的服务。

  • 会话粘性允许您在HTTP标头中指定信息,UCP用于将后续请求路由到同一服务任务,适用于需要有状态会话的应用程序。

posted @ 2018-08-19 19:35  benjamin杨  阅读(757)  评论(0编辑  收藏  举报