容器中跨主机的网络方案-Weave
容器中的网络是建立docker集群的重要内容。
本文将介绍如何用Weave实现容器的多节点互通。
Weave是一个开源的项目,其网站为:
https://www.weave.works/
其工作原理相当比较简单,每个Docke的node和其他Docker的node建立peer的关系,如下图:

在每个Node上,创建Weave的Router,由Weave Router转发容器间的流量,如下图:

安装过程相对比较简单:
一 安装docker
在需要运行docker的node中安装docker软件
yum install docker -y
echo '{"registry-mirrors": ["registry.docker-cn.com"]}' > /etc/docker/daemon.json
systemctl enable docker
systemctl start docker
二 在节点上安装Weave
sudo curl -L git.io/weave -o /usr/local/bin/weave
sudo chmod a+x /usr/local/bin/weave
三 运行Weave
1 在第一个node上运行
curl -L git.io/weave -o /usr/local/bin/weave
eval $(weave env)
weave launch
docker run -d --name w1 nginx
此时可以看到容器的情况:

查看Bridge的情况:

进入容器内部,查看网络情况:

容器内有两个网络接口,eth0是网桥docker0的IP地址,ethwe是网桥Weave的地址。查看路由情况:

可以看到,10.32.0.0/12的Weave网段的路由指向ethwe,默认路由指向eth0。
2 在第二个node上运行
curl -L git.io/weave -o /usr/local/bin/weave
eval $(weave env)
weave launch 10.1.1.6
docker run -d --name w3 nginx
可以看到与node1不同的是在weave launch后加入了node1的IP地址,node2与node1建立了peer。
或者在weave connect 10.1.1.6的方式实现。
进入到容器内查看,也是两个网络接口:

查看路由:

查看联通性:

可以ping通。检查外网:

也可以ping通。
总结:
Weave网络是支持docker不同节点间容器互通的技术,实施简单,拓扑结构也非常清楚。是Docker环境中推荐的部署模式。
容器中跨主机的网络方案-Weave的更多相关文章
- 容器中跨主机的网络方案-Calico
容器中的网络是建立docker集群的重要内容. 本文将介绍如何用Calico实现容器的多节点互通. Calico的组件结构如下: Calico通过etcd同步Bridge的信息,各个Docker no ...
- 容器中跨主机的网络方案-flannel
容器中的网络是建立docker集群的重要内容. 本文将介绍如何用flannel实现容器的多节点互通. 下图是flannel的实现原理,摘自: http://docker-k8s-lab.readthe ...
- Docker系列04—跨主机网络方案(overlay/weave)
在前面详细讲解了几种网络模式:none,host,bridge,container.他们解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信. 跨主机网络方案包括两大类: 1,docke ...
- 理解Docker(6):若干企业生产环境中的容器网络方案
本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- Docker 跨主机网络方案分析
PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...
- centos7下安装docker(15.7容器跨主机网络---calico)
Calico是一个纯三层的虚拟网络方案,Calico为每个容器分配一个IP,每个host都是router,把不同host的容器连接起来.与vxlan不同的是:calico不对数据包进行封装,不需要NA ...
- k8s 各种网络方案 - 每天5分钟玩转 Docker 容器技术(170)
网络模型有了,如何实现呢? 为了保证网络方案的标准化.扩展性和灵活性,Kubernetes 采用了 Container Networking Interface(CNI)规范. CNI 是由 Core ...
- [Kubernetes]谈谈容器跨主机网络
继上篇文章:[Kubernetes]浅谈容器网络,自己给自己挖的坑,这篇文章来谈谈容器跨主机网络. 要理解容器"跨主通信"的原理,就要来谈谈 Flannel 这个项目. Flann ...
- docker 现实---联网多台物理主机,容器桥到物理网络(三)
docker 默认桥接卡docker0 只有当这个单元中的所有容器桥接卡.例如,在主机虚拟网络适配器容器看通常称为veth*** 和docker只要把这些卡桥接在一起,例如下面的附图: waterm ...
随机推荐
- DRBD分布式块设备复制
一. DRBD介绍 1.1.数据镜像软件DRBD介绍分布式块设备复制(Distributed Relicated Block Deivce,DRBD),是一种基于软件.基于网络的块复制存储解决方案,主 ...
- Activity启动的四种方式
Activity启动方式有四种,分别是: standardsingleTopsingleTasksingleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大 ...
- Oracle索引以及索引碎片
索引,可以增加查询速度,若没有索引,每次查询都必须是全表查询.例如,搜索某个记录时(如name="gdpuzxs")时,需要全表扫描一下,因为不知道有多少个name="g ...
- ES使用中遇到的多种坑,以及解决方案
1.查询不到导致404报错 在使用get或者search进行查询获取文档的时候,如果没有结果会抛出404的异常. 我们当然不希望抛出异常,这时候就要使用ignore这个参数来忽略报错,ignore可以 ...
- 使用mybatis如果类属性名和数据库中的属性名不一样取值就会为null
使用mybatis时如果类属性名和数据库中的属性名不一样取值就会为null 这是不能再去改变javabean中的属性,只能改变sql语句.语句如下所示: <select id="sel ...
- MySQL 入门篇
历史 MySQL 是由 David Axmark.Allan Larsson 和 Michael Widenius 3 个瑞典人于 20 世纪 90 年代开发的一个关系型数据库.MySQL 之名取自创 ...
- 在UIElement外面多套一层布局面板(Grid、StackPanel)的意义
在一个UIElement或多个UIElement外面套上一层布局面板(Grid.StackPanel),可以起到统一管理作用(非重点关注):另外,更重要的是:可以起到扩大UIElement操作有效范围 ...
- fiddler之使用教程(一)
一. 什么是fiddler&它可以做什么 fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一.它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定 ...
- IOS-MapKit
一.MapKit框架的使用 MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示 跟踪显示用户的位置 ...
- Python主流框架
15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架Django 应该是最出名的Pyth ...