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. Java抽象类、接口和内部类

    1.抽象方法.抽象类 1)抽象方法: 由abstract修饰 只有方法的定义,没有方法的具体实现(连{}都没有) 由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用一个 ...

  2. 洛谷 P1079 Vigenère 密码

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  3. JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用

    JPA(Java Persistence API)的实现Provider有Hibernate,OpenJPA和EclipseLink等等. 本文介绍如何通过JPA + Eclipse连接SAP云平台上 ...

  4. [dp][uestc oj][最长上升子序列] LIS N - 导弹拦截

    N - 导弹拦截 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  5. [dp][uestc oj]J - 男神的约会

    J - 男神的约会 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  6. noip模拟赛#38

    我打开了#39的problem...想了半个小时多发现我一道题都不会写...于是我打开了#38的problem T1:循环数字的定义为能够将该数划分为若干相同长度的段并且都相同. n=2e18. =& ...

  7. noip模拟赛#45

    T1:n<=1e6,求最小的区间包含(1,m)的所有数. =>双指针扫一遍即可 #include<cstdio> #include<cstring> #includ ...

  8. destoon登录后跳转到指定网址

    打开module\member\register.inc.php文件搜索:<input type="hidden" name="forward" valu ...

  9. 使用jquery.ajax实现省市的二级联动(SSH架构)

    首先实现jquery ajax的二级联动 要下载个jquery.js 我在这里就不准备了 自行百度下载 背景介绍:通过部门的ID来查找部门下的所有班级 我实现二级联动的思路是:先查询所有部门 显示在页 ...

  10. JDBC连接数据库报错:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. ......

    问题:Java程序使用JDBC连接MySQL数据库时,控制台报错如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' ...