Linux路由机制打通网络

路由机制是效率最好的



docker128上修改Docker0的网络地址,与docker130不冲突 vi /usr/lib/systemd/system/docker.service(修改配置文件)

ExecStart=/usr/bin/docker daemon --bip=172.18.42.1/16 -H fd:// - H=unix:///var/run/docker.sock

重要参数:–bip=172.18.42.1/16

systemctl daemon-reload

重启docker128



添加路由

docker130 上执行 route add -net 172.18.0.0/16 gw 192.168.18.128

docker128 上执行 route add -net 172.17.0.0/16 gw 192.168.18.130



130上启动一个容器,获取其IP地址



128上Ping容器



prohibited禁止的,防火墙规则导致Ping禁止



解决:iptables -F ; (防火墙规则清理)iptables -t nat -F (docker的nat规则清理)



在主机上ping成功了。



在两个容器中ping成功了

分析:

Docker130上的一个容器ping 128上的一个容器



Docker128上抓包看到结果



128中的request1里面的ttl eth0中 是63 docker0是62

ttl表示经过一次路由会减一,说明eth0到docker0经过了一次路由,说明ping128是先通过路由经过了物理网卡eth0,在通过路由到了docker0

详细分析:

Docker130上的容器 c1:172.17.0.1 ping 128上的容器c2:172.18.0.1时,c1发现这个地址不是自己子网的,于是发 给docker0网关



经过路由计算,这个报文被发往下一跳的路由器端口:eth0,所以ttl减一



报文到达128主机的eth0网卡,经过路由计算,被发往下一跳的端口dock0:



注意到docker0上的ttl又减了一



回来的时候,数据包流程:c2128 docker0128 eth0130 eth0130 docker0c1



注意:上图标黄的两个mac地址是不一样的

Docker网络方案一览

双网卡独立大二层交换(linux bridge)



和路由不同,会有广播风暴。

Overlay网络(openstack)—主流



这种方法,docker的私有网络包,被封装到了一个已有的物理网络上,外面是看不到的。

优点:对原来的物理网络没有任何的影响,在上面可以做灵活的封装

缺点:对性能消耗较多,目前的硬件环境可能支持的不多。

基于ovs的overlay网络



从逻辑上好像是直接联通的,其实还是通过物理网络传输的,所以是虚线。

学习neutron网络

官方的Libnetwork

Socketplane被docker公司收购,成为其官方网络的起源

开发者不想操作是否是 VLANs, VXLANs, Tunnels 或者是 TEPs. 对于架构人们最关心的是性能和可靠性。而 SocketPlane 在 socket 层面提供了一个网络的抽象层,通过可管理的方式去解决各种网络问题。

主要特性:

•Open vSwitch 集成

•用于 Docker 的零配置多主机网络 •Docker/SocketPlane 集群的优雅增长 •支持多网络

•分布式 IP 地址管理 (IPAM)

docker公司正在做的宏伟蓝图



1.将libnetwork集成到Docker Engine

2.在Docker CLI中使用新的network命令 3.撰写『-net』参数的文档,以告知用户如何使用它来为 容器指定网络 4.在network和endpoint中支持添加『label』 5.研发新的『bridge』插件,以替换Docker目前的实现

从Docker到Kubernetes之技术实战 讲师 Leader-us

6.研发『分布式bridge』插件,以支持跨容器网络

DAT

目前看到有一些计划是打算将OVS项目关联到Docker上来,从Linux Kernel 3.3开始,OVS项目就是内核的一部分。 当我听到这个的时候我觉得是不是脑袋让驴踢了。首先声明我并不是反对使用OVS,实际上,它是一个非常不错 的网络工具套件。它的设置比较复杂,对于新手来说有一个陡峭的学习曲线,但是一旦学会,OVS就可以帮你事 半功倍。关于这个话题我听到的一个讨论是:“如果OVS工作在Docker上,那么工作一切都变得很美好”。让我 告诉你,亲们:如果让我花费大量时间学习它,最后的结果只能是:“还好,可以用”。我并不想说的那么愤世 嫉俗,实际情况是在某些常用环境下OVS会崩溃。因此,使用OVS只是一种疯狂的想法罢了。

http://containertutorials.com/network/ovs_docker.html https://github.com/openvswitch/ovs/blob/master/utilities/ovs-docker

Currently libnetwork is nothing more than an attempt to modularize the Docker platform’s

networking subsystem by moving it into libnetwork as a library.

这仅仅是开始

意思就是docker自己集成网络还只是个蓝图更多还还是openstack和Open vSwitch

Docker系列(五):Docker网络机制(上)的更多相关文章

  1. Docker系列(五)OVS+Docker网络打通示例

    环境说明 两个虚拟机 操作系统Centos7 DOcker版本1.8 脚本内容: 1  4  7  10  19  27  32    33  39   -j ACCEPT 47    48  # R ...

  2. Docker系列04—Docker的网络模式详解

    本文收录在容器技术学习系列文章总目录 1.Docker的四种网络模式 (1)docker四种网络模式如下: Bridge contauner   桥接式网络模式 Host(open) containe ...

  3. Docker系列02—Docker 网络模式

    一.Docker的四种网络模式 1.Docker 的四种网络模式: Bridge container 桥接式网络模式 Host(open) container 开放式网络模式 Container(jo ...

  4. Docker 系列五(Docker Compose 项目).

    一.概念 Docker Compose 是官方编排项目之一,负责快速的部署分布式应用.它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一种相关联的应用容器 ...

  5. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  6. Docker系列05—Docker 存储卷详解

    本文收录在容器技术学习系列文章总目录 1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加面成,启动容器时,docker会加载只读镜像层并在镜 ...

  7. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  8. Docker系列之Docker镜像(读书笔记)

    一.基本概念 Docker包括三个基本概念镜像.容器.仓库. Docker镜像:就是一个只读的模板.例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或其他应用程序.用 ...

  9. docker 系列之 docker安装

    Docker支持以下的CentOS版本 CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. ...

  10. Docker系列二: docker常用命令总结

    https://docs.docker.com/reference/  官方命令总结地址 容器生命周期管理 1.docker run 创建一个新的容器并运行一个命令 docker run [optio ...

随机推荐

  1. IDA静态编译之sub

    int __thiscall sub_10009800(const wchar_t *this, int a2, int a3, HKEY hKey){ } 说明:__thiscall  dll内子函 ...

  2. C# 简单的百度推送代码

    前段时间搞推送来着,安卓方面用到了百度的推送服务,由于只是简单的用到安卓推送的通知功能,所以没用百度推荐的C# SDK,通过借鉴网上的各种资料和百度的API,费了老大劲终于折腾出来一段能用的代码(早知 ...

  3. Bootstrap4入门

    基础样式 颜色 文字颜色以.text-*开头 背景颜色.bg-* primary / seconday / success / danger / warning / info / muted / wh ...

  4. 分布式项目controller项目中web.xml配置文件的编写

    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...

  5. bzoj1294题解

    [题意分析] 给定一张网格图,每个网格可能是普通点.特殊点或障碍点,每个特殊点有一个分值.要求选定一条只经过普通点的可重复回路,使回路内部的特殊点分值和最大. [算法分析] 引理:射线法 对于平面内任 ...

  6. Python 让文件代码支持汉字

    默认使用ASCII编码,改成utf8 #!/usr/bin/env python # -*- coding:utf8 -*- #coding:utf-8

  7. hive的数据存储格式

    hive的数据存储格式 Hive支持的存储数的格式主要有:TEXTFILE(行式存储) .SEQUENCEFILE(行式存储).ORC(列式存储).PARQUET(列式存储). 1 列式存储和行式存储 ...

  8. 牛客多校第十场 H Stammering Chemists 判断图同构

    题意: 给出一个无向图,表示一种有机物质的结构式,问你这个有机物质是列表中的哪个. 题解: 判断图同构需要枚举全排列以对应点,但是此题中几乎只需要将点度数排序后一个一个比较,对于甲基位置再加个特判即可 ...

  9. IK 用java 代码实现分词

    需要导入IK 对应的jar 包 IKAnalyzer2012.jar lucene-core-4.10.jar public static void main(String[] args) throw ...

  10. json-lib 的maven dependency 一直找不到jar 包

    项目中要用到json-lib,mvnrepository.com查找它的dependency时结果如下: xml 代码 <dependency> <groupId>net.sf ...