当前位置: 首页 > 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.dtcms.com/a/277224.html

相关文章:

  • JSON/AJAX/XHR/FetchAPI知识点学习整理
  • Feign实战
  • 六、深度学习——NLP
  • 01_类的概念和定义
  • websocket连接时发生未知错误
  • sqli-labs靶场通关笔记:第9关 时间盲注
  • 快速生成 Android 的 Splash 的 9 Patch 图片
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • AI进化论12:大语言模型的爆发——GPT系列“出圈”,AI飞入寻常百姓家
  • Kafka——Kafka 线上集群部署方案怎么做?
  • c语言初阶 结构体
  • 【Python】venv:配置独立镜像源
  • 常用的docker命令备份
  • 007_用例与应用场景
  • python 列表(List) vs. 元组(Tuple):什么时候该用不可变的元组?它们在性能和用途上有什么区别?
  • 暑期自学嵌入式——Day01(C语言阶段)
  • 协程的基本使用
  • 【保姆级图文详解】MCP架构(客户端-服务端)、三种方式使用MCP服务、Spring AI MCP客户端和服务端开发、MCP部署方案、MCP安全性
  • 基于 CentOS 7 的 LVS+DR+Web+NFS 旅游攻略分享平台部署
  • CentOS系统下前后端项目部署攻略
  • 从 Manifest V2 升级到 Manifest V3:常见问题与解决方案
  • vue-component
  • [Linux入门 ] RAID存储技术概述
  • (S4)Efficiently Modeling Long Sequences with Structured State Spaces论文精读(逐段解析)
  • [Rust 基础课程]Hello World
  • 数据结构 单链表(2)--单链表的实现
  • 聊一聊Java生态接口测试常见的框架
  • 在 Spring Boot 中使用 MyBatis 的 XML 文件编写 SQL 语句详解
  • MySQL SQL语句精要:DDL、DML与DCL的深度探究
  • Design Compiler:什么是代价函数(Cost Function)