Docker网络基础:快速指南

原文连接:http://blogxinxiucan.sh1.newtouch.com/2017/07/30/Docker网络基础:快速指南/

了解有关扩展网络功能的默认Docker网络设置和选项。

网络管理员不再拥有配置物理路由器,交换机和其他LAN / WAN组件的舒适区域。我们现在生活在一个虚拟化世界中,管理员必须挖掘VMware,Microsoft,Red Hat等虚拟化平台中的网络组件。

今天,企业IT 对容器越来越感兴趣,这些容器需要强大的网络技能才能正确配置容器架构。在本文中,我将重点介绍Docker的网络基础,轻松实现最受欢迎的容器平台。我将探讨默认的Docker网络设置,并解释Docker的用户定义配置选项如何提供扩展的网络功能。

默认Docker网络

最初安装Docker时,平台会自动配置三个名为none,host和bridge的不同网络。无法和主机网络无法删除; 它们是Docker中网络堆栈的一部分,但由于没有要配置的外部接口,对网络管理员无效。管理员可以配置桥接网络,也称为docker0网络。该网络自动创建IP子网和网关。属于该网络的所有容器都是同一子网的一部分,因此通过IP寻址可以在该网络中的容器之间进行通信。

然而,默认网桥的缺点是不支持使用DNS对容器进行自动服务发现。因此,如果希望属于默认网络的容器能够相互通信,则必须使用--link选项来静态地允许通信发生。另外,通信需要容器之间的端口转发。

许多管理员发现这些限制严重限制了Docker的网络可用性和可扩展性。这就是为什么创建用户定义的网络更好?它们可以更容易地管理需要彼此通信的容器。

用户定义网络的类型

除了在Docker中自动创建的默认网络之外,管理员还可以配置多个用户定义的网络,并将容器添加到一个或多个这样的网络。重要的是要注意,当容器属于同一个网络时,容器可以与他人通信,但不允许网络之间的通信。可能存在容器需要在多个网络中与其他人通信的情况。要解决这个问题,您只需将该容器添加到多个网络。然后,容器可以与其所关联的所有网络中的容器进行通信。

有三种主要类型的用户定义网络用于不同的通信目的:

桥接网络 - 与默认网桥一样,用户定义的网桥是一个独立的IP子网和网关。但与默认网桥不同,用户定义的网桥内的所有容器都可以直接相互通信,无需端口转发。此外,该网络完全支持使用DNS进行自动发现。如果您希望其他网络中的其他设备与用户定义的桥接网络中的资源进行通信,则只需发布所需的TCP / UDP端口,Docker会将网络地址和端口公开到外部网络。

覆盖网络 - 如果您打算在分布式网络中运行Docker,并且需要不同主机上的容器才能够直接相互通信,则覆盖网络是正确的选择。为此,您的Docker服务器必须启用群组模式并加入相同的群集。Swarm模式是Docker的一种允许管理Docker引擎集群的方法,称为“群集”。一旦完成,您可以使用VXLAN封装方案在群集中创建一个第2层覆盖网络。当容器被添加到覆盖网络时,它们可以直接与所有其他容器通信,就像它们驻留在同一个节点上一样。允许从外部网络到覆盖网络的通信与用户定义的网络网络类似。

Macvlan网络 - 此用户定义的网络类型尝试通过在使用网桥和覆盖网络时消除驻留在容器和主机之间的桥接来简化和简化容器通信。这里的主要优点是它自动将外部容器资源暴露给外部网络,而无需处理端口转发。Macvlan网络通过使用第2层MAC地址而不是第3层IP寻址来实现这一点。

有三种不同的方式来设置Macvlan网络。首先是Macvlan桥模式。在此模式下,每个容器都分配有自己唯一的MAC地址。然后,Docker管理MAC地址到端口映射。在同一Macvlan桥网络内的容器之间的通信在第2层进行切换。Macvlan网桥之外的通信在第3层进行路由。

Macvlan 802.1q中继桥模式允许使用IEEE 802.1q标准中继规范标记不同的第2层VLAN,以分离容器。Docker主机可以配置为外部路由器和交换机的802.1q中继。然后,它通过VLAN分段容器,它们代表单独的网络子网。

如果您在使用IPv4和IPv6寻址的网络中运行Docker容器,则可以利用双栈Macvlan桥接模式。默认情况下,Docker仅在IPv4模式下运行。使用双栈Macvlan网桥,您可以同时使用两个版本的IP协议路由容器。


公众号:it全能程序猿


Docker网络基础:快速指南的更多相关文章

  1. Docker 网络基础介绍

    [编者按]本文作者为 Mesosphere 开发大使 Michael Hausenblas,主要介绍配置 Docker 单主机网络的基本知识.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...

  2. Docker网络基础

    大量的互联网应用服务包括多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合. Docker目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务. 端口映射实现访问容器: 在启动 ...

  3. docker网络基础配置

    常用两种方式: 1)映射容器端口到宿主机 2)容器互联机制 --------------------------------------------- 端口映射实现访问容器的用法: docker ru ...

  4. Linux虚拟网络:Docker网络知识之基础篇

    我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...

  5. Docker系列一之基础快速入门企业实战

    1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...

  6. 【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南

    [SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https ...

  7. Docker基础内容之网络基础

    网络命名空间基本原理 单机版多容器实例网络交互原理 在宿主机上面打开两张网卡eth0与eth1,打通两张网卡的链路 在test1上面启动一个veth网卡,创建一个namespace:并桥接到eth0上 ...

  8. 快速掌握Docker必备基础知识

    快速掌握Docker必备基础知识 Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种 ...

  9. Docker容器基础入门认知-网络篇

    这篇文章中,会从 docker 中的单机中的 netns 到 veth,再到单机多个容器之间的 bridge 网络交互,最后到跨主机容器之间的 nat 和 vxlan 通信过程,让大家对 docker ...

随机推荐

  1. Integer的一个小问题

    看面试题的时候看到这道题: public class Demo { public static void main(String[] args) { Integer i1 = 128; Integer ...

  2. 读书笔记2013-2 Linux内核设计与实现A

    读书笔记2013-2 Linux内核设计与实现A <Linux内核设计与实现> 简介 这本书不是想Linux源码剖析那样一行行分析Linux源代码的书,而是从Linux历史,Linux哲学 ...

  3. [机器视觉] SIFT特征-尺度不变特征理解

    SIFT特征-尺度不变特征理解 简介 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述.这种描述具有尺度不变性 ...

  4. [web开发] 利用微信小程序开发上海大学失物招领平台

    我从开始学微信小程序到最后完全写完这个小程序耗时四天,可以说开发难度非常之低,门槛也非常低,之前从来没接触过微信小程序,重新写下开发记录. 先放图: 1.前端开发 前端我用到了iview的ui框架,因 ...

  5. NHibernate使用之详细图解

    本文档适合初级开发者或者是第一次接触NHibernate框架的朋友,其中NHibernate不是最新的版本,但是一个比较经典的版本 NHibernate 2.1.2,其中用红线标注的部分一定要仔细看, ...

  6. Python 的多态与多态性

    多态:是指一类事物有多种形态(!!!!定义角度!!!!) 多态性:在继承的基础上, (!!!!使用角度!!!!!) 使用多态性,实现了利用函数统一调用一个接口 多态 #多态:同一种事物的多种形态,动物 ...

  7. CPP-基础:C/C++数组名与指针的区别

    2005-08-23 08:36 来源:天极网 作者:宋宝华 责任编辑:方舟·yesky 引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用.于是乎,很 ...

  8. iOS深拷贝与浅拷贝

    概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对象内存到另一块内存中. 如图详解:

  9. ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES) MYSQL 新建用户 无法登录 问题解决方法

    使用mysql ,出现新建账户无法登录问题 查看 user列表中,有部分账户没有设置密码,将全部重新设置一遍密码,然后还是无法登录. 使用命令 update user set password=pas ...

  10. 201621123080《java程序设计》第六周作业总结

    201621123080<java程序设计>第六周作业总结 1. 本周学习总结 2. 书面作业 clone方法 1.1 在test1包中编写Employee类,在test2包中新建一个Te ...