容器中的网络是建立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的更多相关文章

  1. 容器中跨主机的网络方案-Calico

    容器中的网络是建立docker集群的重要内容. 本文将介绍如何用Calico实现容器的多节点互通. Calico的组件结构如下: Calico通过etcd同步Bridge的信息,各个Docker no ...

  2. 容器中跨主机的网络方案-flannel

    容器中的网络是建立docker集群的重要内容. 本文将介绍如何用flannel实现容器的多节点互通. 下图是flannel的实现原理,摘自: http://docker-k8s-lab.readthe ...

  3. Docker系列04—跨主机网络方案(overlay/weave)

    在前面详细讲解了几种网络模式:none,host,bridge,container.他们解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信. 跨主机网络方案包括两大类: 1,docke ...

  4. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  5. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  6. centos7下安装docker(15.7容器跨主机网络---calico)

    Calico是一个纯三层的虚拟网络方案,Calico为每个容器分配一个IP,每个host都是router,把不同host的容器连接起来.与vxlan不同的是:calico不对数据包进行封装,不需要NA ...

  7. k8s 各种网络方案 - 每天5分钟玩转 Docker 容器技术(170)

    网络模型有了,如何实现呢? 为了保证网络方案的标准化.扩展性和灵活性,Kubernetes 采用了 Container Networking Interface(CNI)规范. CNI 是由 Core ...

  8. [Kubernetes]谈谈容器跨主机网络

    继上篇文章:[Kubernetes]浅谈容器网络,自己给自己挖的坑,这篇文章来谈谈容器跨主机网络. 要理解容器"跨主通信"的原理,就要来谈谈 Flannel 这个项目. Flann ...

  9. docker 现实---联网多台物理主机,容器桥到物理网络(三)

    docker 默认桥接卡docker0 只有当这个单元中的所有容器桥接卡.例如,在主机虚拟网络适配器容器看通常称为veth***  和docker只要把这些卡桥接在一起,例如下面的附图: waterm ...

随机推荐

  1. 初入Spring-boot(二)

    一.入口类 Spring boot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法其实就是一个标准的java应用的入口方法.在main方法中使用Spring ...

  2. js异步获取数据的问题

    最近做js开发的时候发现了很多哥们不能区分同步和异步的区别,典型的在ajax部分,在该ajax为异步操作的时候,获取不到success之后的data的值,于是产生了各种奇葩的写法.比如创建一个局部变量 ...

  3. 64位机的pl/sql不安装32位oracle的连接方式

    第一步:下载即时客户端包    在Oralce官方网站上下载Oracle Instantclient Basic package.地址如下:http://www.oracle.com/technetw ...

  4. Python基础笔记系列五:元组

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 元组 1)元组的结构和访问.使用方法和列表基本一致,区别主要有两点:1.使 ...

  5. python time 和 datetime 模块的简介

    时间处理 time 和 datetime import timeimport datetimeprint time.time() #时间戳显示为1508228106.49print time.strf ...

  6. 分享知识-快乐自己:List 集合去重合并 , 多种方法演示

    最近空闲时间去面试 , 被问了一个问题list如何去重合并 , 想了半天只想到了最繁琐的循环方法 , 顿觉丢人. 整理一下资料供大家参考: List<String> a = new Arr ...

  7. 使用命令行启动spring boot项目

    1.找到项目路径 cd target 2.敲命令--------java -jar xxxx.jar ------------------------------------------------- ...

  8. 支付宝VIE的罪与罚

    http://tech.ifeng.com/special/tusimple/alibaba/#_www_dt2   雅虎的杨致远.软银的孙正义,都曾是马云阿里巴巴创业路上的贵人,也都曾是相互信任的朋 ...

  9. 【CSAPP】二、信息的表示和处理

    三种重要的数字表示:无符号 . 补码 . 浮点数. [一]信息存储 最小单位是字节, 在操作系统层面,只需要关注地址.系统将存储器空间划分为更可管理的单元,存放不同的程序对象(程序数据.指令.控制信息 ...

  10. 【数据库】python访问mysql

    import MySQLdb 所有的数据库遵循相同的python database API 需要建立connection对象连接数据库,之后建立cursor对象处理数据. conn = MySQLdb ...