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 ...
随机推荐
- wireshark抓包总结
过滤规则: ip.src == 源地址 and http(协议)
- Ubuntu 16.04 PHP5.6
Cannot add PPA: 'ppa:ondrej/php5-5.6' Ubuntu 16.04 PHP5.6 安装 Apache + PHP 5.6 + mysql 5.5 系统: Ubuntu ...
- 【Problem】xampp in ubuntu下命令行启动mysql报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)
xampp in ubuntu下命令行启动mysql报错: reddevil@reddevil-Lenovo:/opt/lampp$ ./bin/mysql -u root -p Enter pass ...
- protobuf3的学习笔记
学习protobuf的过程中踩了不少的坑,这篇博文算是一个小结吧! 环境: windows VisualStudio Google.Protobuf.Tools. Google.Protobuf. 其 ...
- windows常用
host文件位置:C:\Windows\System32\drivers\etc
- 区间dp——cf983b
推出一个很神奇的结论就可以进行dp了 这个结论不光可以用在异或操作上,还可以用在任意操作里 /* 首先可以做出一个关于f的递推式 f[1..n]=f[ f[1..n-1],f[2..n] ] 那么直接 ...
- NX二次开发-UFUN删除链表函数UF_MODL_delete_list
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- How to Add Swap on CentOS
About Linux Swapping Linux RAM is composed of chunks of memory called pages. To free up pages of RAM ...
- 4.1_springboot2.2任务之异步、定时、邮件任务
1.异步任务 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spri ...
- adb shell 查看内存信息
1.根据包名来查看指定的APP指定数据adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数据没有参数名,可以参考这个命令来看:adb shel ...