基于MACVLAN配置VMWARE虚拟机中容器网络

测试部环境组 201711

0 文档说明

MACVLAN是docker的一种支持跨主机网络的driver。macvlan本身是linux kernel模块,功能是允许同一个物理网卡配置多个MAC地址,即多个interface,每个interface可以配置自己的IP。本质上是一种网卡虚拟化技术。最大的优点是性能极好。

相对原使用pipework配置容器IP,更为方便,且容器重启后IP仍存在。

测试部主要使用macvlan为各容器配置静态IP,使用方法总结如下。

1 若docker主机为虚拟机,则开启对应VLAN的混杂模式

图片略

2 虚拟机可添加多个网卡,容器即可配置不同地址段IP

配置步骤如下:

2.1 假设当前ubuntu虚拟机配置的网桥br43,地址段为172.28.2.0/24

修改模式:

ip link set br0 promisc on

创建network

docker network create -d macvlan --subnet=172.28.2.0/24 --gateway=172.28.2.254 -o parent=br43 cslc-macvlan1

虚拟机创建容器

docker run -itd --name=u16-sie --hostname=u16-sie --net=cslc-macvlan1 --ip=172.28.2.205 172.28.2.2:4000/sie:171101 /bin/bash

至此容器172.28.2.205与其他各环境,各虚拟机,办公网络均可互通。

2.2 为虚拟机添加一个网卡,VLAN为TD_280

ip addr show对照mac地址确定是哪一个接口eth?

为网卡添加地址

ip addr add 172.26.80.1/24 dev eth3

ifconfig eth3 up

ip link set eth3 promisc on

创建第二个docker network

docker network create -d macvlan --subnet=172.26.80.0/24 --gateway=172.26.80.254 -o parent=eth3 cslc-macvlan2

虚拟机创建容器

docker run -itd --name=u16-sie1 --hostname=u16-sie1 --net=cslc-macvlan2 --ip=172.26.80.205 172.28.2.2:4000/sie:171101 /bin/bash

至此容器172.26.80.205与其他各环境,各虚拟机,办公网络均可互通。

3 测试方法:

外部ping容器ip

ping 172.26.80.205

ping 172.28.2.205

容器ping外部ip

docker exec u16-sie1 ping -c2 172.26.80.254

docker exec u16-sie ping -c2 172.26.80.254

docker exec u16-sie1 ping -c2 172.28.2.254

docker exec u16-sie ping -c2 172.28.2.254

docker exec u16-sie1 ping -c2 172.20.18.254

docker exec u16-sie ping -c2 172.20.18.254

说明:因macvlan通过主机网卡/网桥与外部通信,容器与所属主机之间无法ping。

基于MACVLAN配置VMWARE虚拟机中容器网络的更多相关文章

  1. 谈谈VMware虚拟机中的网络问题

    前言:用了好几年的虚拟机,多多少少都会遇到那么一些网络问题,在这里总结一下这么几年在虚拟机中遇到的一些网络问题(主要针对linux)...... 一.VMware相关基础知识 1.bridged(桥接 ...

  2. VMWARE虚拟机中CentOs7网络连接

    1.选择网络连接模式 这里选择NAT模式 2.查看虚拟机逻辑地址段 编辑---->虚拟网络编辑器 这里显示的是192.168.40.0 我们本机占用了192.168.40.1,网关是192.16 ...

  3. 2016-11-10:win7下VMware虚拟机中CentOS6.5网络配置

    在win7环境下,使用桥接和NAT模式配置VMware虚拟机网络,实现宿主机与虚拟机以及虚拟机通过宿主机网卡访问互联网. 1 配置VMware虚拟网络编辑器 VMnet0 桥接模式 VMnet1仅主机 ...

  4. 【Linux】VMware虚拟机中如何配置静态IP

    此处详解如何在VMware虚拟机中配置静态IP. 上图是一个草图,大致说明下VMware网络情况.网段指某个IP范围,例如一栋小区楼和另一栋小区楼就不是一个网段 如果你在A小区,你女朋友在B小区,你想 ...

  5. VMware虚拟机中如何配置静态IP

    我们首先说一下VMware的几个虚拟设备 VMnet0:用于虚拟桥接网络下的虚拟交换机 VMnet1:用于虚拟Host-Only网络下的虚拟交换机 VMnet8:用于虚拟NAT网络下的虚拟交换机 VM ...

  6. VMware虚拟机CentOS7 - VMnet8网络配置及常见问题解决

    本文环境 物理机OS: Windows10 专业版 虚拟机平台: VMware Workstation 14 虚拟机OS: CentOS 7 配置步骤 一. 查看物理主机的网络配置信息 主要是找到可以 ...

  7. (转)VMware虚拟机三种网络模式的区别及配置方法;

    我的一点实际经验理解桥接和NAT 桥接是虚拟机完全作为一个独立的地址接在局域网中,NAT是虚拟机依赖宿主主机地址转换的一种方式 例子我的虚拟机如果用桥接模式,连接外部网站如百度时会提示此pc没有装公司 ...

  8. 在VMware虚拟机中配置DOS汇编开发环境!!

    操作系统:win7 32位 DOS环境:DosBox  下载:http://www.dosbox.com/ 选择当前适合自己版本,下载就可以了. 汇编编译器:MASM 5.0 下载:http://do ...

  9. VMware虚拟机三种网络模式的区别(上篇)

    提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...

随机推荐

  1. (复习)父子组件传值使用v-modal双向绑定,报错Avoid mutating a prop directly解决方案

    报错:Avoid mutating a prop directly since the value will be overwritten whenever the parent component. ...

  2. js -- 操作sqlite数据库

    最近看到一个使用js来操作sqlite数据库的,测试了一下,具体使用的是 js操作类: https://github.com/kripken/sql.js/(sqlite js 驱动) 异步请求:ht ...

  3. OpenCV——仿射变换

    什么是仿射变换? 一个任意的仿射变换都能表示为 乘以一个矩阵 (线性变换) 接着再 加上一个向量 (平移). 综上所述, 我们能够用仿射变换来表示: 旋转 (线性变换) 平移 (向量加) 缩放操作 ( ...

  4. Oracle中行转列,列转行pivot的用法

    测试数据准备 --建表 --drop table SalesList; create table SalesList( keHu ), --客户 shangPin ), --商品名称 salesNum ...

  5. js bug

    1 加载模块脚本失败:服务器以非JavaScript MIME类型“text/html”响应. 描述:ES6 import Class时路径出错,少一个 / ,添上即可

  6. 5.springboot-------Yaml

    springboot配置文件: Yaml是什么玩意? Yaml的基本语法 编写规则 1.大小写敏感,同json: 2.通过缩进表示层级关系:符号含义 注意事项:字符串默认不需要加上单引号或双引号. # ...

  7. Iris配置

    package main import ( "github.com/kataras/iris" "os" "encoding/json" & ...

  8. zabbix4.2配置邮件+脚本报警:以QQ邮箱为例

    一.邮箱配置:开启smtp服务和授权 开启smtp选项后,系统会生成一个授权,你需要记住这个授权码,后面需要写入配置文件. 二.配置管理mailx: (1)安装mailx:[root@zabbix-s ...

  9. AC3 channel coupling

    1.overview 如果使用channel coupling, encoder端计算所有channel的transform coefficients的平均值,将平均值压缩到coupling chan ...

  10. SFSA

    #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #in ...