Docker系列(五):Docker网络机制(上)
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又减了一
回来的时候,数据包流程:c2128 docker0128 eth0130 eth0130 docker0c1
注意:上图标黄的两个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网络机制(上)的更多相关文章
- Docker系列(五)OVS+Docker网络打通示例
环境说明 两个虚拟机 操作系统Centos7 DOcker版本1.8 脚本内容: 1 4 7 10 19 27 32 33 39 -j ACCEPT 47 48 # R ...
- Docker系列04—Docker的网络模式详解
本文收录在容器技术学习系列文章总目录 1.Docker的四种网络模式 (1)docker四种网络模式如下: Bridge contauner 桥接式网络模式 Host(open) containe ...
- Docker系列02—Docker 网络模式
一.Docker的四种网络模式 1.Docker 的四种网络模式: Bridge container 桥接式网络模式 Host(open) container 开放式网络模式 Container(jo ...
- Docker 系列五(Docker Compose 项目).
一.概念 Docker Compose 是官方编排项目之一,负责快速的部署分布式应用.它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一种相关联的应用容器 ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...
- Docker系列05—Docker 存储卷详解
本文收录在容器技术学习系列文章总目录 1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加面成,启动容器时,docker会加载只读镜像层并在镜 ...
- Docker系列01—Docker 基础入门
一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...
- Docker系列之Docker镜像(读书笔记)
一.基本概念 Docker包括三个基本概念镜像.容器.仓库. Docker镜像:就是一个只读的模板.例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或其他应用程序.用 ...
- docker 系列之 docker安装
Docker支持以下的CentOS版本 CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. ...
- Docker系列二: docker常用命令总结
https://docs.docker.com/reference/ 官方命令总结地址 容器生命周期管理 1.docker run 创建一个新的容器并运行一个命令 docker run [optio ...
随机推荐
- BCZM: Chapter 2
2.1 二进制数中 1 的个数 实现一个函数,输入一个无符号整数,输出该数二进制中的1的个数.例如把9表示成二进制是1001,有2位是1,因此如果输入9,该函数输出2 分析与解法 解法1:利用十进制和 ...
- Eclipse规范注释及注释文档的生成
Eclipse作为JavaIDE(Integrated Development Environment,集成开发环境),可以通过设置自动添加Javadoc注释信息,如@author 作者名.@vers ...
- 把swf反编译成fla的几种方法
2007年著 第一种方法: 利用IMPERATOR FLA1.63 ,这个软件有演示版 和正式版 , 演示版不能反编译Action Scropt,在利用正式版反编译的过程中有时会丢失Action Sc ...
- tensorflow 训练的时候loss=nan
出现loss为nan 可能是使用了relu激活函数,导致的.因为在负半轴上输出都是0
- 20140329 自由 youtube
1.人生入戏,全靠演技:人生苦短,必须性感 2.youtube修改用户名 3.使用代理软件修改了IE的代理导致上不了网
- postgresql+java数据类型对照
网上搜了很多都不理想,这里总结的一部分是官网的文档,一部分是网上的,大体没问题 PostgreSQL™ Java SE 8 date LocalD ...
- solr添加IK分词和自己定义词库
下载IK分词IK Analyzer 2012FF_hf1.zip 下载地址:http://yunpan.cn/cdvATy8899Lrw (提取码:c10d) 1.将IKAnalyzer2012FF_ ...
- ubuntu 删除 mysql (转)
1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 sudo apt-get ...
- 【LGP5439】【XR-2】永恒
题目 是个傻题 显然枚举每一条路径经过了多少次,如果\(u,v\)在树上不是祖先关系的话经过\((u,v)\)这条路径的路径条数就是\(sum_u\times sum_v\) 于是我们子树大小映射到\ ...
- C++ vector操作--往列表中添加或更新内容
有个列表,往里面添加内容,如果对象已存在,只更新其属性,否则添加新一项. #include <iostream> #include <string> #include < ...