当前位置: 首页 > news >正文

Docker网络模型(八)使用 macvlan 网络

使用 macvlan 网络

一些应用程序,特别是传统的应用程序或监控网络流量的应用程序,期望直接连接到物理网络。在这种情况下,你可以使用 macvlan 网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来像一个直接连接到物理网络的物理网络接口。在这种情况下,你需要在你的Docker主机上指定一个物理接口来用于 macvlan,以及 macvlan的子网和网关。你甚至可以用不同的物理网络接口来隔离你的 macvlan 网络。请牢记以下事项:

  • 由于IP地址耗尽或 "VLAN扩散"(即在你的网络中拥有不适当的大量唯一MAC地址的情况),你的网络很容易在无意中被破坏。

  • 你的网络设备需要能够处理 "混杂模式",即一个物理接口可以被分配多个MAC地址。

  • 如果你的应用程序可以使用 bridge(在单个Docker主机上)或 overlay(在多个Docker主机上通信)来工作,从长远来看,这些解决方案可能更好。

创建一个 macvlan 网络

当你创建一个 macvlan 网络时,它可以是 bridge 模式或 802.1q 中继桥接模式。

  • 在桥接模式下,macvlan 流量通过宿主机上的物理设备走掉。

  • 在 802.1q 中继桥接模式下,流量会通过 Docker 即时创建的 802.1q 子接口。这允许你在一个更细的层次上控制路由和过滤。

bridge 模式(桥接模式)

要创建一个 macvlan 网络,并与给定的物理网络接口进行桥接,需要在 docker network create 命令中使用 --driver macvlan 。你还需要指定父接口,也就是流量将从Docker主机上的物理接口通过。

$ docker network create -d macvlan \--subnet=172.16.86.0/24 \--gateway=172.16.86.1 \-o parent=eth0 pub_net

如果你需要在 macvlan 网络中排除IP地址,例如当一个给定的IP地址已经被其他用户使用时,使用 --aux-addresses

$ docker network create -d macvlan \--subnet=192.168.32.0/24 \--ip-range=192.168.32.128/25 \--gateway=192.168.32.254 \--aux-address="my-router=192.168.32.129" \-o parent=eth0 macnet32

802.1q 中继桥接模式

如果你指定一个包含点号(.)的 父接口 名称,比如 eth0.50,Docker会将其解释为 eth0 的一个子接口,并自动创建该子接口。

$ docker network create -d macvlan \--subnet=192.168.50.0/24 \--gateway=192.168.50.1 \-o parent=eth0.50 macvlan50

用 ipvlan 而不是 macvlan

上面的例子用的依然是三层桥接。你可以用 ipvlan ,通过指定 -o ipvlan_mode=l2 来获得一个二层桥接。

$ docker network create -d ipvlan \--subnet=192.168.210.0/24 \--subnet=192.168.212.0/24 \--gateway=192.168.210.254 \--gateway=192.168.212.254 \-o ipvlan_mode=l2 -o parent=eth0 ipvlan210

使用IPv6

如果你已经 配置 Docker daemon 使用 IPv6,那么可以使用 IPv4/IPv6 macvlan 双栈网络。

$ docker network create -d macvlan \--subnet=192.168.216.0/24 --subnet=192.168.218.0/24 \--gateway=192.168.216.1 --gateway=192.168.218.1 \--subnet=2001:db8:abc8::/64 --gateway=2001:db8:abc8::10 \-o parent=eth0.218 \-o macvlan_mode=bridge macvlan216

下一步

  • 通关 macvlan 网络教程
  • 学习 容器层面看网络
  • 学习 bridge 网络
  • 学习 overlay 网络
  • 学习 host 网络
  • 学习 Macvlan 网络
http://www.lryc.cn/news/92862.html

相关文章:

  • 控制视图内容的位置
  • 【分布式系统与一致性协议】
  • 音视频领域的未来发展方向展望
  • 时间同步/集群时间同步/在线/离线
  • 基于BP神经网络对MNIST数据集检测识别(numpy版本)
  • HTML5-创建HTML文档
  • Vue中Axios的封装和API接口的管理
  • MLIR面试题
  • ***杨辉三角_yyds_LeetCode_python***
  • Mac使用DBeaver连接达梦数据库
  • spring.expression 随笔0 概述
  • 从Cookie到Session: Servlet API中的会话管理详解
  • docker数据管理与网络通信
  • 怎么查询电脑的登录记录及密码更改情况?
  • 《三》TypeScript 中函数的类型
  • 深入学习 Mysql 引擎 InnoDB、MyISAM
  • 【华为OD统一考试B卷 | 100分】阿里巴巴找黄金宝箱(V)(C++ Java JavaScript Python)
  • 六步快速搭建个人网站
  • TypeScript 中的 type 关键字有什么用?
  • 27 getcwd 的调试
  • 使用IDEA使用Git:Git使用指北——实际操作篇
  • java boot将一组yml配置信息装配在一个对象中
  • 【裸机开发】链接脚本(.lds文件)的基本语法
  • Java 进阶 -- 集合(三)
  • 【华为OD机试真题 C语言】5、TLV解析 | 机试真题+思路参考+代码解析
  • (七)CSharp-刘铁锰版-事件
  • 【ROS】郭老二博文之:ROS目录
  • Android应用程序进程的启动过程
  • 【2】Midjourney注册
  • 第六十八天学习记录:高等数学:导数(宋浩板书)