容器docker网络解析
2024-09-07 06:51:23
如果想要实现两台主机之间相连通信,最直接的办法是找一根网线连起来,
多台的话需要用网线将他们链接再交换机上。 linux中能够起到虚拟交换机的网络设备是网桥birdge, 工作再链路层,
主要是根据mac地址将数据包转发到网桥的不同端口。 docker默认创建docker0网桥,凡是链接再docker0上的docker就可以用它来通信了。 而要用容器链接到docker0上需要用到veth pair的虚拟设备。 veth pair的设备特点是:它被创建出来后总是以两张虚拟网卡(veth peer)的形式成对出现的,从其中一个网卡发出的数据包,可以直接出现再与它对应的另一张网卡上,
哪怕这两张网卡再不同的 network namespace里 所以veth pair常被当做链接不同network namespace的网线一样
当启动一个容器之后进入到容器内部用 ifconfig可以看到
容器内部有一张eth0的网卡,它正是veth pair 设备再容器里的这一端; 再容器里用route查看容器路由,
可以看到凡是再172.17.0.0/16 均会较给主机eth0网卡来处理 而容器的地址是172.17.0.2,属于这个范围内 来到宿主机查看另一端:
ifconfig可以看到有一个虚拟网卡名字比较长,用 brctl show可以看到这张网卡被插在了
docker0网桥上 所以容器和宿主机是通过docker0网桥来进行交互的,不同容器之间也是,因为虚拟网卡都是插在docker0上的
最新文章
- 【CronExpression表达式详解和案例】
- MYSQL 的一些文件及说明
- 泛函编程(19)-泛函库设计-Parallelism In Action
- Android下载文件到SD卡
- [转载]Dotfuscator Professional Edition 4.9.7500.9484 混淆工具破解版+使用教程
- linux安装composer
- 使用vs中的工具进行架构比较
- (中等) POJ 3034 Whac-a-Mole,DP。
- C# 如何隐藏或显示工作表中的网格线
- idea快捷键(后续更新)
- 【sping揭秘】22、事务管理
- char *直接赋值和strcpy之间什么区别
- 删除sonarqube仪表盘上无用的工程
- Quick and Easy Installation of Oracle Database 12c on Oracle Linux in Oracle VM VirtualBox
- HDU 1019 Least Common Multiple 数学题解
- QT:QObject 简单介绍
- 表达式树(Expression Tree)
- 除了C语言,C++······竟然还有Z语言?
- 查看oracle数据库日志存放位置
- ISO7816 (part 1-3) asynchronous smartcard information
热门文章
- 【剑指Offer】链表中倒数第k个节点 解题报告(Python)
- oracle中connect by prior的使用
- Java+Eclipse+MySQL+Swing实现学生会考成绩管理系统(免费完整项目)
- MySQL高级查询与编程笔记 • 【第5章 常见数据库对象】
- Android物联网应用程序开发(智慧城市)—— 购物信息的存储界面开发
- Gradle sync failed (3 s 402 ms) - Android Studio问题解决方法
- 使用.NET 6开发TodoList应用(19)——处理OPTION和HEAD请求
- CSS基础 常见的元素显示模式
- python 字典 分别根据值或键进行排序的方法
- HTTP 状态码整理