• Docker——网络


    基本网络配置

    Linux平台下,Docker容器网络资源通过内核的Network Namespace机制实现隔离,不同的Network Namespace 有各自的网络设备、协议栈、路由表、防火墙规则等,反之,同一Network Namespace下的进程共享同一网络视图。

    网络驱动

    Docker网络中使用Libnetwork的容器网络模型定义类标准的API用于容器配置网络,其底层还可以适配各种网络驱动。

    Libnetwork使得Dockers具备跨主机多子网的能力,同一个子网内不同容器可以运行在不同主机上。
    Libnetwork实现了五种驱动:

    • null:空配置,用户自己给容器配置网络和路由。
    • remote:Docker网络插件的实现,使得Libnetwork可以通过HTTP RESTful API对接第三方网络方案。
    • host:容器与主机共享同一Network Namespace,共享同一套网络协议栈、路由表以及防火墙规则。
    • bridge:Docker默认的容器网络驱动。有点像Linux Bridge,一种虚拟交换机技术。
    • overlay:Docker原生的跨主机多子网网络方案。主要通过Linux bridge和vxlan隧道实现。

    VXLAN
    Linux Bridge

    Docker的网络模式

    在运行容器的时候,可以通过--net标签进行修改网络模式。通过对Network Namespace的操作,Docker提供五种容器网络模式:

    • none:不为容器配置任何网络功能。
    • container:与另一个运行中的容器共享Network Namespace,共享相同的网络视图。
    • host:与主机共享Network Namespace,容器有完整的权限可以操纵主机的协议栈、路由表和防火墙,所以是不安全的。
    • bridge:Dokcer设计的NAT网络模型。Docker Daemon启动时会在主机创建一个Linux网桥,容器启动时,Docker会创建一堆veth pair设备,一端连在容器的Network Namespace上,另一端连载网桥上,从而实现网桥上的容器都能通信。
    • overlay:Docker原生的跨主机多子网模型。

    Docker Bridge 网络拓扑图图:
    在这里插入图片描述

    overlay模式网络拓扑图:
    在这里插入图片描述
    所谓沙盒,就是一个隔离的网络运行环境,保存了容器网络栈的配置,包括对网络接口、路由表和DNS配置的管理。

    跨主机多子网

    Open vSwitch

    OpenvSwitch,简称OVS是一个虚拟交换软件,主要用于虚拟机VM环境,作为一个虚拟交换机,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。OpenvSwitch还支持多个物理机的分布式环境。

    一个虚拟交换机(vswitch)主要有如下两个作用:

    • 传递虚拟机VM之间的流量
    • 以及实现VM和外界网络的通信。

    可以用OpenvSwitch替换Docker默认的网桥,然后再OVS网桥上添加VXLAN端口实现跨主机通信。

    Flannel

    Flannel是一种开源的Docker SDN网络解决方案,这样我们就不需要通过ip命令手动配置网络,不用把网桥一个个连接在一起。
    Flannel的使用依赖于Etcd,而Etcd时一种开源的K-V存储及服务发现程序,在集群中可用于不同主机之间交换配置、状态信息等。
    在这里插入图片描述

    Flannel也用于Kuberntes中的网络方案。

  • 相关阅读:
    MyBatis+Oracle+Sequence
    原来这就是JVM垃圾
    JVM内存布局
    CacheAsidePattern结论
    The LMAX Architecture
    网络编程
    随机存取文件流
    数据流
    打印流
    标准输入流、标准输出流
  • 原文地址:https://www.cnblogs.com/lippon/p/14255134.html
Copyright © 2020-2023  润新知