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

使用macvlan实现容器的跨主机通信

使用环境:

两台运行docker的服务器
A机器网段:192.168.86.61
B机器网段:192.168.86.62
运行的容器需装有ping指令,

实验参数解释:

-d macvlan 指定创建网络驱动类型
--subnet= 指定子网范围
-gateway 指定网关地址
-o parent=eth0 指定宿主机物理接口(父接口)
macvlan_net 创建子网指定其网络名称

实验一:A B机器的容器可以互通,无法与宿主机互通,无法上外网,只能与同vlan中容器通信【一个macvlan只能绑定一个物理接口】

操作步骤一,

A机器操作:


## 创建一个新的网络,指定其网络驱动类型 ,指定子网和网关,指定父接口,并赋名
docker network create -d macvlan --subnet=172.18.1.0/24 --gateway=172.18.1.1 -o parent=eth0 macvlan_net  
## 启动一个可用ping命令的容器,指定网络模式,指定静态ip
docker run -itd --name test-1 --net macvlan_net --ip=172.18.1.10 centos:7

B机器操作:

docker network create -d macvlan --subnet=172.18.1.0/24 --gateway=172.18.1.1 -o parent=eth0 macvlan_net docker run -itd --name test-1 --net macvlan_net --ip=172.18.1.10 centos:7

测试A B

A机器操作
docker exec -it test-1 ping baidu.com
docker exec -it test-1 ping 172.18.1.20
docker exec -it test-1 ping 192.168.86.62
B机器操作
docker exec -it test-2 ping 172.18.1.10
docker exec -it test-2 ping 192.168.86.61
docker exec -it test-2 ping baidu.com

实验结果:可以看到两个容器之间可以互相通信。但无法和外网及宿主机通信。

[root@mongodb-1 ~]# docker exec -it test-1 ping baidu.com
PING baidu.com (182.61.201.211) 56(84) bytes of data.
From e450a1930ae1 (172.18.1.10) icmp_seq=1 Destination Host Unreachable
From e450a1930ae1 (172.18.1.10) icmp_seq=2 Destination Host Unreachable
From e450a1930ae1 (172.18.1.10) icmp_seq=3 Destination Host Unreachable
------------------------------------------------
[root@mongodb-1 ~]# docker exec -it test-1 ping 172.18.1.20
PING 172.18.1.20 (172.18.1.20) 56(84) bytes of data.
64 bytes from 172.18.1.20: icmp_seq=1 ttl=64 time=2.24 ms
64 bytes from 172.18.1.20: icmp_seq=2 ttl=64 time=1.91 ms
------------------------------------------------
[root@mongodb-1 ~]# docker exec -it test-1 ping 192.168.86.62
PING 192.168.86.62 (192.168.86.62) 56(84) bytes of data.
From 172.18.1.10 icmp_seq=1 Destination Host Unreachable
From 172.18.1.10 icmp_seq=2 Destination Host Unreachable

清理环境

docker rm -f test-1
docker rm -f test-2
docker network rm macvlan_net

实验二,容器和同网段其他设备互通和宿主机不互通

设置macvlan子网和宿主机完全同网段,容器和同网段其他设备互通,但是无法和宿主机互通(走的是本地的路由器

A机器操作

docker network create -d macvlan --subnet=192.168.86.0/24 --gateway=192.168.86.2 -o parent=eth0 macvlan_host_netdocker run -itd --name tset-1 --net macvlan_host_net --ip=192.168.86.110 centos:7

B机器操作

docker network create -d macvlan --subnet=192.168.86.0/24 --gateway=192.168.86.2 -o parent=eth0 macvlan_host_netdocker run -itd --name tset-1 --net macvlan_host_net --ip=192.168.86.111 centos:7

测试

A机器操作
docker exec -it test-1 ping baidu.com
docker exec -it test-1 ping 192.168.86.111
docker exec -it test-1 ping 192.168.86.62
B机器操作
docker exec -it test-2 ping 192.168.86.110
docker exec -it test-2 ping 192.168.86.61
docker exec -it test-2 ping baidu.com
http://www.xdnf.cn/news/1116469.html

相关文章:

  • KL散度:信息差异的量化标尺 | 从概率分布对齐到模型优化的核心度量
  • C++高频知识点(十一)
  • ALB、NLB、CLB 负载均衡深度剖析
  • 开源工具DeepFilterNet:实时语音降噪
  • 更换docker工作目录
  • 06.计算两个日期之间的差值
  • lambdastream深入剖析
  • 【LeetCode100】--- 4.移动零【复习回顾】
  • mmap映射文件
  • 理解 Robots 协议:爬虫该遵守的“游戏规则”
  • HTML 标题标签
  • AI驱动的软件工程(上):人机协同的设计与建模
  • Python 学习之路(十)--常见算法实现原理及解析
  • 深度学习-循环神经网络RNN
  • 谷歌推出Vertex AI Memory Bank:为AI智能体带来持久记忆,支持连续对话
  • MongoDB性能优化实战指南:原理、实践与案例
  • RedisJSON 技术揭秘(五)`JSON.ARRPOP` 原子弹出 修改数组的终极手段
  • Java设计模式之行为型模式(命令模式)介绍与说明
  • 串口A和S的含义以及RT的含义
  • 深入理解观察者模式:构建松耦合的交互系统
  • 设计模式深度解析:单例、工厂、适配器与代理模式
  • Word中的批注显示与修订显示
  • STM32 | HC-SR04 超声波传感器测距
  • 洛谷 P13014:[GESP202506 五级] 最大公因数
  • CentOS系统下前后端项目部署攻略
  • 【MLLM】多模态理解GLM-4.1V-Thinking模型
  • 深度学习图像分类数据集—水质量识别分类
  • java.net.InetAddress
  • Extended Nested Arrays for Consecutive Virtual Aperture Enhancement
  • RHCIA第二次综合实验:OSPF