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又减了一
在这里插入图片描述
回来的时候,数据包流程: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

转载于:https://www.cnblogs.com/LeesinDong/p/10835485.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值