overlay网络实战

n3启动consul

docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

访问 Consul:
http://192.168.2.13:8500

n1 n2启动docker

iptables -P FORWARD ACCEPT
systemctl stop docker
dockerd --cluster-store=consul://192.168.2.13:8500 --cluster-advertise=eth0:2376 --cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的连接地址。

查看Consul/创建overlay网络/查看其ip网段

docker network create -d overlay ov_net1

[root@n1 ~]# docker network inspect ov_net1
[
{
"Name": "ov_net1",
"Id": "24e2f69b4d3475f84e4f5df65c13a29ffe4469c924d92d772eeb925900a4a40f",
"Created": "2017-12-26T21:42:43.86848909+08:00",
"Scope": "global",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1"
}
]
},

IPAM 是指 IP Address Management,docker 自动为 ov_net1 分配的 IP 空间为 10.0.0.0/24。

n1 n2跑容器在ov_net1上测网络连通性

- 在n1创建b1 在n2创建b2
docker run -itd --name b1 --net ov_net1 busybox
docker exec -it b1 ip a
docker run -itd --name b2 --net ov_net1 busybox
docker exec -it b2 ip a - 测试连通性
[root@n1 ~]# docker exec b1 ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=1.123 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.648 ms - overlay网络自带dns
[root@n1 ~]# docker exec b1 ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=1.123 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.648 ms

深究overlay网络细节

一块网卡的网段用于建vxlan隧道,另一块用于对接docker_gwbridge上网

- b1的网关是172.18.0.1
[root@n1 ~]# docker exec b1 ip r
default via 172.18.0.1 dev eth1
10.0.0.0/24 dev eth0 scope link src 10.0.0.2
172.18.0.0/16 dev eth1 scope link src 172.18.0.2 - 查看网桥docker_gwbridge
[root@n1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
6ec6e565e277 docker_gwbridge bridge local
24e2f69b4d34 ov_net1 overlay global - 查看docker_gwbridge的ip- 说明docker_gwbridge是容器的网关
[root@n1 ~]# docker network inspect docker_gwbridge|grep Gateway
"Gateway": "172.18.0.1" - 查看docker_gwbridge的ip
[root@n1 ~]# ip a s docker_gwbridge
8: docker_gwbridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:24:f2:17:b6 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 scope global docker_gwbridge - 在创建一个b3
[root@n1 ~]# docker run -itd --name b3 --net ov_net1 busybox
41b677a7769514daeb6804142b8db4e8d7ad4c6623b363ae4fdcac5a252601b4 1.docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux bridge br0
2.endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上。
3.br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。 - 查看ns( ln -s /var/run/docker/netns /var/run/netns) [root@n1 ~]# ip netns exec 1-24e2f69b4d brctl show
RTNETLINK answers: Invalid argument
bridge name bridge id STP enabled interfaces
br0 8000.0e304477edf8 no veth0
veth1
vxlan0 - 查看vxlan0口的vlanid
[root@n1 ~]# ip netns exec 1-24e2f69b4d ip -d l show vxlan0|grep vxlan
5: vxlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br0 state UNKNOWN mode DEFAULT
vxlan id 256 srcport 0 0 dstport 4789 proxy l2miss l3miss ageing 300

查看overlay(vxlan)的数据包

https://github.com/lannyMa/scripts/blob/master/pkgs/overlay_vxlan.pcap

[docker]docker自带的overlay网络实战的更多相关文章

  1. docker应用-5(使用overlay 网络进行容器间跨物理主机通信)

    同一个主机上的Docker容器之间通信 docker 引擎会在主机上增加一个docker0网卡,该网卡具有双重身份: 1.从容器视角,网桥(交换机)身份docker0 对于运行在同一个主机上的各个容器 ...

  2. Docker容器跨主机通信--overlay网络

    一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接 ...

  3. Docker单机网络实战

    前言 Docker系列文章: 此篇是Docker系列的第八篇,大家一定要按照我做的Demo都手敲一遍,印象会更加深刻的,加油! 为什么要学习Docker Docker基本概念 Docker镜像基本原理 ...

  4. Docker 新网络 overlay 网络

    Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式. 这样不但能够充分利用成熟的IP路由协议进程数据分发,而且在Overlay技术 ...

  5. 准备 overlay 网络实验环境 - 每天5分钟玩转 Docker 容器技术(49)

    为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 ...

  6. 创建 overlay 网络 - 每天5分钟玩转 Docker 容器技术(50)

    上一节我们搭建好实验环境,配置并运行了consul,今天开始创建 overlay 网络. 在 host1 中创建 overlay 网络 ov_net1: -d overlay 指定 driver 为 ...

  7. centos7下安装docker(15.2跨主机网络-overlay)

    为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网 ...

  8. Docker Swarm 创建overlay网络

    Docker Swarm 创建overlay网络 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节点:192.168.1.79 工作节点:192.168.1. ...

  9. docker 使用swarm overlay网络时,报“network xx not manually attachable”错误解决

    当使用swarm的overlay网络,在该网络中运行容器时报“network xx not manually attachable”的错误 docker network create -d overl ...

随机推荐

  1. BZOJ5074 小B的数字 BZOJ2017年10月月赛 其他

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5074 题意概括 题解 作为蒟蒻的我第一个就选择了过的人最多的D题. 不仔细看好吓人. 然而并不难. ...

  2. BZOJ1826 [JSOI2010]缓存交换 堆 贪心

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1826 题意概括 Cache中有m个储存单元,接下来有n个访问地址,每个地址用一个数字表示.访问每一 ...

  3. Word 如何设置空白页不编码,其他页码连续

    或许 不是最简单的方法: 先假设 空白页前的那部分为“第一部分”,空白页后的那部分为“第二部分”. 首先插入2个“分节符”,  将第一部分.空白页.第二部分分成三节(记得取消每一节的“链接到前一条页眉 ...

  4. hdu 1166 敌兵布阵【线段树】(求给定区间和)

    题目链接:https://vjudge.net/contest/182746#problem/B       敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)   ...

  5. Java内存管理-JVM内存模型以及JDK7和JDK8内存模型对比总结(三)

    勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了JVM及其启动流程,今天介绍一下JVM内部的一些区域,以及具体的区域在运行 ...

  6. 用redis来实现Session保存的一个简单Demo

    现在很多项目都用Redis(RedisSessionStateProvider)来保存Session数据,但是最近遇到一个比较典型的情况,需要把用户数据全部load到redis里面,在加上RedisS ...

  7. Codeforces.833B.The Bakery(线段树 DP)

    题目链接 \(Description\) 有n个数,将其分为k段,每段的值为这一段的总共数字种类,问最大总值是多少 \(Solution\) DP,用\(f[i][j]\)表示当前在i 分成了j份(第 ...

  8. Shiro笔记(五)JSP标签

    Shiro笔记(五)JSP标签 导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags&q ...

  9. C++学习笔记43:STL

    STL简介(standard Template Library) STL的基本组件:容器(container),迭代器(iterator),函数对象(function object) 算法(algor ...

  10. web开发必备的浏览器常识

    浏览器内核: 1.使用Trident内核的浏览器:IE.Maxthon.TT.The World等: 2.使用Gecko内核的浏览器:Netcape6及以上版本.FireFox.MozillaSuit ...