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. Oracle 修改 新增 触发器 针对字段修改 触发器 误删Oracle表、数据、触发器找回 闪回查询

    emmmm 写这个博客心情很复杂,,,本来这个触发器早就写好了,后来发生点事就写个博客当个备份吧,就当留纪念了:话不多数上问题以及SQL: 问题: 在ABONPB表上增加一个触发器,针对车牌号字段做u ...

  2. Servlet中的Filter怎么使用?

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  3. Batch - FOR /F Delims 和 Tokens 用法

    原文地址: for /f命令之—Delims和Tokens用法&总结 作者:别逗了好么 在For命令语踞饽参数F中,最难理解的就是Delims和Tokens两个选项,本文简单的做一个比较和总拮 ...

  4. thinkphp 防止XSS(跨站脚本攻击)

    XSS(跨站脚本攻击)可以用于窃取其他用户的Cookie信息,要避免此类问题,可以采用如下解决方案: 直接过滤所有的JavaScript脚本: 转义Html元字符,使用htmlentities.htm ...

  5. 双目立体匹配经典算法之Semi-Global Matching(SGM)概述:视差计算、视差优化

    文章目录 视差计算 视差优化 剔除错误匹配 提高视差精度 抑制噪声 视差计算   在SGM算法中,视差计算采用赢家通吃(WTA)算法,每个像素选择最小聚合代价值所对应的视差值作为最终视差,视差计算的结 ...

  6. NX二次开发-设置经典工具栏的可见性UF_UI_set_toolbar_vis

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  7. window location跳转

    "top.location.href"是最外层的页面跳转"window.location.href"."location.href"是本页面 ...

  8. Ehcache3.x学习(一)入门

    简介 Ehcache 是一个开源的高性能缓存,拥有很高的拓展性和伸缩性,广泛使用各种 Java 项目中(如 Hibernate 默认使用 Ehcache作为二级缓存),在目前基于 Java 的缓存方案 ...

  9. C#委托的实质

    1,委托时方法指针: 2,委托时一个类,对其进行实例化的时候,要将引用的方法作为他的构造方法的参数.

  10. jq页面换肤效果

    <!DOCTYPE html> <html lang="en"> <head> <script src="http://code ...