centos7下安装docker(15.3跨主机网络-macvlan)

除了ovrlay,docker还开发了另一个支持跨主机容器的driver:macvlan

macvlan本身是linu kernel模块,其功能是允许在同一物理网卡上配置多了MAC地址,即:多个interface,每个interface可以配置自己的ip。macvlan本身是一种网卡虚拟化技术,Docker用macvlan实现容器网络就不奇怪了

macvlan最大的优点是性能极好,相比其他方案,macvlan不需要创建Linux bridge,而是直接通过以太interface连接到物理网络

准备实验环境:

我们会使用docker1和docker2上单独的网卡ens192和ens160创建macvlan。为保证多个MAC地址网络包都可以从ens190或者ens160通过,我们需要打开网卡的混杂模式

因为docker1号docker2是虚拟机,所以在网卡配置选项中设置混杂模式

当前试验环境如下:盗图

创建macvlan网络

docker network create -d macvlan --subnet 192.168.2.1/24 --gateway 192.168.2.1 -o parent=ens160 macnet1

注:macvlan网络是local网络,为了保证跨主机能够通信,用户需要自己管理IP subnet

与其他网络不同,docker 不会为macvlan网络创建网关,这里的网关应该是真实存在的,否则路由无法通

-o parent指定使用的网络interface

在docker2中也要执行相同的命令:docker network create -d macvlan --subnet 192.168.2.1/24 --gateway 192.168.2.1 -o parent=ens160 macnet1

在docker1中运行容器

docker network create -d macvlan --subnet 192.168.2.1/24 --gateway 192.168.2.1 -o parent=ens160 macnet1

在docker2中执行同样的操作:

验证docker1上的mac1与docker2上的mac2的连通性

两个不同主机之间的容器可以相互ping通,但是不能解析容器的主机名,可见docker没有为macvlan提供dns服务,这点与overlay是不同的

注:macvlan是物理中实实在在存在的网络,macvlan实际就是我们常用的网卡的子接口,类似于:eth0:1

macvlan网络结构分析:

macvlan不依赖linux bridge,brctl show可以确认macvlan没有创建新的bridge

查看一下容器mac1的网络设备:

除了lo,容器只有一个eth0,请注意:eth0后面还有@if2,表明该网卡有一个对应的interface,全局编号为2,。根据macvlan的原理,我们猜测这个interface就是ens192,

确认如下:

可见,容器的eth0就是ens192通过macvlan虚拟出来的interface。容器的interface直接与主机的网卡连接,这种方案是的容器无需通过NAT和端口映射就能与外网直接通信(只要有网关)在网络上与其他独立的主机没有区别

当前网络如图所示:

时间: 2024-07-30 05:18:20

centos7下安装docker(15.3跨主机网络-macvlan)的相关文章

centos7下安装docker时出现没有安装包docker问题的解决

我在centos7下安装docker时遇到了没有安装包docker,我不知道大家是否有遇到过,是否有好的解决办法,下面把我个人的解决办法给大家奉献上,希望对大家有所帮助. 因为按照大家认为的Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: $ yum install docker -y 但是安装提示没有安装包docker 后来自己结合查阅的资料终于整理出了解决办法 我们需要在/etc/yum.repo.d/目

CentOS-7下安装docker

CentOS-7 下安装docker 原文地址:https://www.cnblogs.com/yufeng218/p/8370670.html 一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核版本 2.使用 root 权限登录 Centos.确保 yum 包更新到最新. 原文地址:https://www.cnblogs.com/zh

centos7下安装docker(14.2跨主机网络-overlay)

为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网二层服务,但是拥有更强的扩展性和灵活性. Docker overlay网络需要一个key-value数据库用于保存网络信息状态,包括Network,Endpoint,IP等.Consul,Etcd和Zookeeper都是docker支持的key-value软件,今天讨论的是consul 试验环境描述

centos7下安装docker(15.6docker跨主机网络---Weave)

Weave是weaveworks开发的容器网络解决方案.weave创建的虚拟网络可以将部署在多个主机上的容器连接起来.对于容器来说,weave就像一个巨大的网络交换机,容器可以直接通信,无需NAT和端口映射.除此之外,weave的DNS模块是容器可以通过hostname访问 weave不依赖分布式数据库(例如:consul和etcd)交换网络信息,每个主机上只需要运行weave组件就能建立起跨主机容器网络,weave网络能够穿透防火墙并运行在部分连接的网络上,weave支持加密网络接连,用户可以

centos7下安装docker(14安装docker machine)

之前我们做的实验都是在一个host上面的,其实在真正的环境中有多个host,容器在这些host上面启动,运行,停止和销毁,相关容器会通过网络相互通信,无论他们是否运行在相同的host上面. 对于这种歌multi-host环境,我们该如何高效的进行管理呢? 第一个问题就是:为所有host安装和配置docker 之前我们手工安装了一个docker host: 1.安装https CA证书 2.添加GPG key 3.添加docker apt源 4.安装docker      对于多主机的环境手工方式

Linux(centos7)下安装Docker

近期公司开始推Docker技术.这个系列的文章都是基于CentOS7系统下进行讲解的. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口.Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器.Docker 容器通过 Docker 镜像来创建.容器与镜像的关系类似于面向对象编程中的

centos7下安装docker 17.x

docker的17.X版本与以前的docker安装有些不同,参考了下这篇文章http://www.itmuch.com/docker/docker-2/,以下是我的docker 17.X版本安装过程,记下来,方便以后查阅 1.卸载老的版本docker: yum remove docker docker-common container-selinux docker-selinux docker-engine 执行该命令只会卸载Docker本身,而不会删除Docker内容,例如镜像.容器.卷以及网

centos7下安装docker(19容器架构)

What,Why,How What:什么是容器? 说起容器大家想到的是什么?      集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成container 2.虚拟机:AWS,Azure,VMware,华为,公有云,私有云等 对容器有了解的人都会觉得容器和虚拟机很像,因为二者都是为应用提供封装和隔离. 1.系统层面:容器本质上是单个应用程序,而虚拟机则需要更多的资源来运行整个操作系统,虚拟机上可以运行容器,其实我们也可以把容器看作成一个

CentOS7下安装Docker

环境说明:CentOS7 Docker1.检查CentOS内核版本,新版本的Docker要求内核不低于3.1#uname -r2.更新yum版本#yum update3.检查是否内置了docker,或者安装过docker,将其删除#rpm -qa | grep docker#yum remove docker docker-common docker-selinux docker-engine4.安装需要的包#yum install -y yum-utils device-mapper-pers