使用macVLAN网络模式的容器连通性和延迟的测试
- 创建docker及其macVLAN网络环境
- 准备
- 创建macVLAN网络
- 创建容器
- 测试是否work
- 联通性测试
- 背景
- 结果
- 延迟
- 背景
- 结果
- 结论
创建docker及其macVLAN网络环境
准备
- 使用VMWARE创建两台虚拟机,master : 192.168.91.133.,node : 192.168.91.134
在两台虚拟机中安装docker,配置docker加速仓库
国内可使用阿里云加速仓库:https://dev.aliyun.com/search.html
登陆后,在加速器中可以看到自己的加速地址
然后配置两个虚拟机的docker文件sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https:// [ YOUR OWN CODE ].mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
下载docker镜像
[root@master docker]# docker pull docker.io/busybox
Using default tag: latest
Trying to pull repository docker.io/library/busybox ...
latest: Pulling from docker.io/library/busybox
1cae461a1479: Pull complete
Digest: sha256:c79345819a6882c31b41bc771d9a94fc52872fa651b36771fbe0c8461d7ee558
[root@master docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest c75bebcdd211 2 weeks ago 1.106 MB
创建macVLAN网络
- 设置master和node的网络类型为混杂模式
[root@master ~]# ip link set ens33 promisc on
[root@master ~]# ifconfig ens33
ens33: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500inet 192.168.91.133 netmask 255.255.255.0 broadcast 192.168.91.255inet6 fe80::1e97:b457:c2a8:10b2 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:b7:61:15 txqueuelen 1000 (Ethernet)RX packets 180518 bytes 211043955 (201.2 MiB)RX errors 0 dropped 2 overruns 0 frame 0TX packets 22461 bytes 2168198 (2.0 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node ~]# ip link set ens33 promisc on
[root@node ~]# ifconfig ens33
ens33: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500inet 192.168.91.134 netmask 255.255.255.0 broadcast 192.168.91.255inet6 fe80::1e97:b457:c2a8:10b2 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:b7:61:15 txqueuelen 1000 (Ethernet)RX packets 180518 bytes 211043955 (201.2 MiB)RX errors 0 dropped 2 overruns 0 frame 0TX packets 22461 bytes 2168198 (2.0 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 分别创建docker网络,macvlan模式采用bridge
[root@node ~]# docker network create -d macvlan --subnet 192.168.91.0/24 --gateway 192.168.91.2 -o parent=ens33 -o macvlan_mode=bridge macnet
acbe125bd16f97d3922294ed5c2bc9b76b1036ee2c0274d7b1af90b988574525
[root@node ~]# docker network list
NETWORK ID NAME DRIVER SCOPE
2ca267d05a8d bridge bridge local
19abb1689b41 host host local
acbe125bd16f macnet macvlan local
4bcffff15284 none null local
[root@master docker]# docker network create -d macvlan --subnet 192.168.91.0/24 --gateway 192.168.91.2 -o parent=ens33 -o macvlan_mode=bridge macnet
35551f92a13aeb061b3fb78a23c079651c3de1753c9fe486f39037f50c0968aa
[root@master ~]# docker network list
NETWORK ID NAME DRIVER SCOPE
fa248c027d7f bridge bridge local
e3cd0c7dd8c2 host host local
35551f92a13a macnet macvlan local
313e639a0dde none null local
创建容器
在master上创建c1 : 192.168.91.100 , c2 : 192.168.91.101
在node上创建c3 : 192.168.91.102 , c4 : 192.168.91.103
[root@master docker]# docker run -id --net macnet --ip 192.168.91.101 --name c2 docker.io/busybox sh
6c147982a1b2c90bef61758db9de3f4caaa718ab1df8e2648ae06706704c0a08
[root@master docker]# docker run -id --net macnet --ip 192.168.91.100 --name c1 docker.io/busybox sh
b94eef6f4ae9ec64b9de9ed6396e4c1be17dac1503671e22ffdfee4b80511f04
[root@master docker]# docker exec c1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
7: eth0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:c0:a8:5b:64 brd ff:ff:ff:ff:ff:ffinet 192.168.91.100/24 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::42:c0ff:fea8:5b64/64 scope link valid_lft forever preferred_lft forever
测试是否work
[root@master ~]# docker exec c1 ping c1
PING c1 (192.168.91.100): 56 data bytes
64 bytes from 192.168.91.100: seq=0 ttl=64 time=0.091 ms
64 bytes from 192.168.91.100: seq=1 ttl=64 time=0.134 ms
64 bytes from 192.168.91.100: seq=2 ttl=64 time=0.143 ms
说明容器可以联通自己的IP地址,工作正常
联通性测试
背景
为了弄明白采用macVLAN网络模式的容器对外、对自己联通性如何,在c1上分别ping其他IP, 然后在master上也进行相同测试
结果
192.2(网关) | c1(容器名称) | 192.100(c1的IP) | 192.133(master) | 192.134(node) | c2 | 192.101(c2的IP) | c3(不同宿主机容器名) | 192.102(c3的IP) | |
---|---|---|---|---|---|---|---|---|---|
c1 | √ | √ | √ | × | √ | √ | √ | × | √ |
192.2(网关) | 192.100(c1的IP) | 192.134(node) | 192.102(c3的IP,跨主机容器) | |
---|---|---|---|---|
master | √ | × | √ | √ |
延迟
背景
为了大致验证容器使用macVLAN后,从容器出发的数据包相比裸机直接通讯具有多少延迟,做此测试。
先测试从master到node的平均延迟:
node | |
---|---|
master | 0.426ms |
结果
c1 | c2(同宿主机) | node | c3(不同宿主机) | |
---|---|---|---|---|
c1 | 0.174ms | 0.185ms | 0.731ms | 0.771ms |
结论
- 使用macVLAN模式的容器,==无法ping通宿主机==,==宿主机也无法ping通该容器==。对其他服务器和所有的容器都可以联通。
- 相比宿主机的通讯延迟,从c1到c3的延迟有所增加(==本测试增加了0.35ms==)
使用macVLAN网络模式的容器连通性和延迟的测试相关推荐
- 【Docke进阶篇】Docker网络模式与容器间通信
本篇主要是Docker网络模式与容器间通信. 上一篇:[Docker基础篇]Docker核心概念与指令 文章目录 一.预备知识点 二.Docker网络模式 1.查看Docker网络模式 2.bridg ...
- 【Docker】容器的几种网络模式
当你使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.本文介绍了Docker的4种 ...
- Docker容器-------网络模式,数据卷和数据卷容器
目录 Docker网络实现原理 Docker的网络模式 Host模式 Container模式 none模式 bridge模式 自定义网络 查看网络模式列表 查看容器信息(包含配置.环境.网关.挂载.c ...
- Docker ❀ 容器内部/外部通信、端口映射、网络模式、自定义容器网络
文章目录 1.网络通讯 命名空间类型 2.网络模式 Docker服务默认存在四组网络模式 3.端口映射 -p : 容器指定端口映射为本地随机端口: -p : 容器指定端口映射为本地指定端口: -p : ...
- Docker学习:容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解
前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍容器网络模式, 属于了解范畴,充分了容器的网络模式,更有助于更好的理解Docker的容器之间的访问逻辑. 疑问:为什么要了解容器 ...
- docker容器的四种网络模式
容器的四种网络模式 docker容器的四种网络模式:bridge 桥接模式.host 模式.container 模式和 none 模式 启动容器时可以使用 –net 参数指定,默认是桥接模式. 以下是 ...
- Docker6种网络配置详解,网络模式应该这么选
文章目录 一.Bridge网络模式 二.Host网络模式 三.Overlay网络模式 四.None网络模式 五.Macvlan网络模式 六.Ipvlan网络模式 七.网络模式选择 在Docker中,网 ...
- Docker(十四):Docker:网络模式详解
Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...
- 查看此docker网络连接模式_Docker:网络模式详解
袖珍指南 Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创 ...
- docker网络--理解linux底层实现机制、docker网络模式
1. Linux网络基础 Linux内核具有非常成熟和高性能的TCP / IP堆栈实现.Docker网络使用linux内核的网络堆栈作为低级原语来创建高级网络驱动程序.简而言之,Docker网络就是 ...
最新文章
- 科技产品下一个重大突破将来自芯片堆叠技术
- 安装Subversion1.82(SVN)
- 写学生管理系统后的一些感想
- C51蜂鸣器和数码管动静态显示
- 利用 Win32 启动和检测 UWP App 的方法
- linux redhat配置yum源为网易(163)源的方法
- 计算机算法设计与分析 循环赛日程表
- shell脚本的学习(二)
- java thread与runnable联系区别
- 说服力:从场景化出发的用户价值
- 【模糊神经网络】基于matlab的模糊神经网络仿真
- u盘镜像制作linux系统,制作iso镜像U盘自动化安装linux系统
- 一种设想:打造小程序版本公号和自托管的公号,将你的网站/blog做到微信/微信公号里且与PC端合一
- BootStrap3 排版
- [C++STL] Priority Queue 介绍及源码分析
- 网传腾讯大规模裁员测试工程师,腾讯相关人员否认
- 服务器不能使用无线键盘,无线键盘突然没反应怎么回事_无线键盘没反应的解决方法...
- 天球坐标系和地球坐标系
- Windows XP 源代码在线泄露
- 从1.0到2.0:移动互联网入口战升级
热门文章
- Idea使用SVN下载运行项目
- 浅谈程序猿简历的写法,你会如何写你的简历呢。
- C# 大华相机图像采集
- 深度置信网络 Deep belief network
- react + hooks 中使用aliplayer
- 单片机 矩阵式按键
- linux系统查看网卡是否开启,查看Linux下网卡状态或 是否连接
- 基于PaddlePaddle2.0的蝴蝶图像识别分类——利用预训练残差网络ResNet101模型中参数的调整,数据增强
- vscode 经常弹出unins000.exe报错,尝试在目标目录创造文件时发生错误 重试 跳过这个文件 关闭安装程序
- linux sqlplus 历史命令,SQLPLUS下历史命令查找