docker 网络理论知识点 - CNM 和命名空间

news2024/11/25 20:52:04

Network

目录

    • 1 network namespace
      • 1.1 动手小实验
    • 2 回到 docker
      • 2.1 driver and docker0
      • 2.2 network
      • 2.3 网桥 docker0
    • 3 总结

1 network namespace

1.1 动手小实验

网络命名空间。linux kernel 提供的网络虚拟化的功能。创建多个隔离的网络空间。每个空间内 firewall, ether card, router table,协议栈 都是独立的,就像单独主机。

Namespace是Linux提供的一种对于系统全局资源的隔离机制;从进程的视角来看,同一个namespace中的进程看到的是该namespace自己独立的一份全局资源,

【实验】动手实现一下下面

image.png

# 创建namespace
ip netns add ns1
ip netns add ns2
ip netns exec ns1 ip a

创建一条 veth pair 连接:

ip link add veth-ns1 type veth peer name veth-ns2

可以发现此时多了两个网络接口:

image.png

两个接口 interface 的名字分别为: veth-ns1 veth-ns2

把他们分配给两个 namespace:

ip link set veth-ns1 netns ns1
ip link set veth-ns2 netns ns2

插上了:

image.png

ns2 也一样。

下面给他俩分配 ip address:

ip netns exec ns1 ip a add 192.168.1.1/24 dev veth-ns1
ip netns exec ns1 ip a add 192.168.1.2/24 dev veth-ns2

让网卡UP:

ip netns exec ns1 ip link set dev veth-ns1 up
ip netns exec ns2 ip link set dev veth-ns2 up

可以 ping 通了:

image.png

ns2 也一样。

2 回到 docker

CNM 容器网络模型。一种规范。沙盒sadbox + 终端endpoint + 网络network

sadbox -> namespace
endpoint -> veth interface 网卡

网桥和 router 的区别: 网桥用于同构网络,同网段通信;router用于异构网络,不同网段通信。

image.png

image.png

如上图。注意,C身上的两个终端(网卡)是不能通信的,除非有内部路由器。

2.1 driver and docker0

2.2 network

image.png

上图第一个是 “单机桥接网络”。

你可以自己给 docker 添加 network. docker run 时还可以连:

	-network network    Connect a container to a network

DRIVER 驱动就是代码实现。

2.3 网桥 docker0

bridge network 是由 Bridge driver 驱动创建的,并创建一个默认网桥 docker0。

现实生活中真实的网桥长这样:

image.png
让我们看看名为 bridge 的 network:

docker network inspect bridge

image.png

几个重要字段:

{
	"Name": "bridge",
	"Driver": "bridge",
	"IPAM": {
		"Config": [
			{
				"Subnet": "172.17.0.0/16",
				"Gateway": "172.17.0.1"
			}
		]
	},
	"Containers": {
		"79a86.............":{
			"Name": "container0",
			"IPv4Address": "172.17.0.2/16"
		},
		"d61ee3.............":{
			"Name": "container0",
			"IPv4Address": "172.17.0.2/16"
		}
	},
	"Options": {
		"com.docker.network.bridge.name": "docker0"
	}
}

该网络中有两个container, 用的 docker0 做的网桥。

bridge network 是由 Bridge driver 创建的,并创建一个默认网桥 docker0。 container 与网桥间通过 veth pair 连接, 网桥与外网间通过 NAT 网络地址转换技术 连接。

image.png

我们还可以把容器们布置成这种结构:

image.png

inspect可以看到如下信息, 就不截图了。

containerIP Addr
bb1-interface1172.17.0.2/16
bb2-interface1172.17.0.3/16
bb2-interface2172.18.0.2/16
bb3-interface1172.18.0.3/16

3 总结

一个 network namespace 就代表一个独立的主机,一个容器就对应一个 namespace,所以一个容器就代表了网络中的一个独立主机。

CNM 是规范,Libnetwork 是规范的实现。Driver 是 Libnetwork 中不同网络模式的实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matplotlib学习

文章目录 Matplotlib曲线图的绘制饼图的绘制直方图的绘制散点图的绘制 Matplotlib 在深度学习的实验中,图形的绘制和数据的可视化非常重要。Matplotlib是用于绘制图形的库,使用Matplotlib可以轻松地绘制图形和实现数据的可视化。这里,我们来…

Linux学习之文件信息和文件类型

使用ls -l可以看到当前目录下除隐藏文件之外的文件。 我们拿下边这行信息解释一下: -rw-r--r-- 1 root root 10562254 Mar 9 00:08 cmake-3.25.3.tar.gz Linux中“一切皆文件”,首先需要明确这点,因为对于不同的文件类型,后边的…

前后端分离项目之修改存储信息

本文章基于:前后端分离项目之登录页面(前后端请求、响应和连接数据库)_小俱的一步步的博客-CSDN博客 目录 一、编辑者操作步骤 二、代码实现步骤 以下以存储学生信息为例 一、编辑者操作步骤 1.在前端“编辑”按钮,点击时弹出弹框,出现…

某大厂测试开发面试总结,大家可以参考一下

目录 前言 1、RecyclerView和ListView的区别 2、技术选型的依据 3、原生monkey的原理 4、monkey和monkeyRunner区别 5、appium和uiautomator的关系或者Airtest和uiautomator的区别 6、Android进程间通信方式 7、内存溢出与内存泄露的区别及内存泄漏的原因 8、性能数据收…

mac版Excel表格中出现E+

相信很多人在使用Excel的时候都遇到过单元格变成###的情况,这是由于单元格列宽不够造成的,只需要增加列宽就可以正常显示。如果你在使用Excel的过程中遇到过出现"E"这种情况,此时不要惊慌,这是Excel自动对很大或很小的数…

C语言实现汉诺塔问题【图解和演示】

大家好,我是纪宁。 在高中时,曾有一位故友问过我类似这种移盘子的题目(数列),我当时一脸茫然,上了大学才知道原来是著名的汉诺塔问题 本文,就将介绍汉诺问题的由来、原理、及C语言如何实现 目录…

ZooKeeper【实际案例】

服务器动态上下线监听 需求 在我们的分布式系统中,有多台服务器节点,我们希望任意一台客户端都能实时收到服务器节点的上下线。 实现 服务器节点上线以后自动去zookeeper目录注册自己的节点信息(创建Znode临时节点)&#xff0c…

无人机侦察区域覆盖

irvingvasquez/ocpp: Optimal coverage path planning (github.com) matlab2020可运行

MySQL数据表进阶操作

MySQL数据表高级操作 一、克隆表二、清空表三、创建临时表四、创建外键约束五、MySQL中6种常见的约束:六、数据库用户管理 一、克隆表 将数据表的数据记录生成到新的表中 被克隆的对象: 方法一: 第一步:create table 新表名 li…

2023年简历石沉大海,别投了,软件测试岗位饱和了....

各大互联网公司的接连裁员,政策限制的行业接连消失,让今年的求职雪上加霜,想躺平却没有资本,还有人说软件测试岗位饱和了,对此很多求职者深信不疑,因为投出去的简历回复的越来越少了。 另一面企业招人真的…

机器学习_预测概率校准

我们在建模时通常根据准确性或准确性来评估其预测模型,但几乎不会问自己:“我的模型能够预测实际概率吗?” 但是,从商业的角度来看,准确的概率估计是非常有价值的(准确的概率估计有时甚至比好的精度更有价值…

Dao层、Service层、Entity层、Servlet层、Utils层

这几天在复习高数,还有刷题。 B: 第五周任务 [Cloned] - Virtual Judge (vjudge.net) http://t.csdn.cn/S3imr G: 第五周任务 [Cloned] - Virtual Judge (vjudge.net) http://t.csdn.cn/UVgfK Dao层是数据访问层Service层是业务逻辑层…

深度学习HashMap之手撕HashMap

认识哈希表 HashMap其实是数据结构中的哈希表在Java里的实现。 哈希表本质 哈希表也叫散列表,我们先来看看哈希表的定义: 哈希表是根据关键码的值而直接进行访问的数据结构。 简单说来说,哈希表由两个要素构成:桶数组和散列函数…

汽车电子Autosar之车载以太网

前言 近些年来,随着为了让汽车更加安全、智能、环保等,一系列的高级辅助驾驶功能喷涌而出。未来满足这些需求,就对传统的电子电器架构带来了严峻的考验,需要越来越多的电子部件参与信息交互,导致对网络传输速率&#x…

NR及LTE中的IQ数据与信息、比特率、码元、波特率之间的关系

信息与比特率 信息:对信源进行数字编码后的数据,基本单位是bit。 比特率:信息的速率称为比特率(bit/s、bps),通常用Rb表示。 码元与波特率 码元 固定时长的信号波形(数字脉冲),也称为一个符号,symb。 (…

LeetCode36. 有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) …

【极海APM32F4xx Tiny】学习笔记05-移植 RTT NANO工程

5.移植 RTT NANO工程 移植步骤: 1. mdk添加rtt nano 包文件 2. 添加源码 3. 屏蔽2个中断处理函数 4. 修改board.c文件 5. 添加控制台 6. 添加finsh组件 7. 编写测试工程 1. mdk添加rtt nano 包文件 也可以下载后手动安装 下载链接https://www.rt-thread.org/downl…

【openeuler】Yocto embedded sig联合例会 (2022-11-03)

Yocto &embedded sig联合例会 (2022-11-03)_哔哩哔哩_bilibili

从浏览器输入url到页面加载(六)前端必须了解的路由器和光纤小知识

前言 上一章我们说到了数据包在网线中的故事,说到了双绞线,还说到了麻花。这一章继续沿着这条线路往下走,说一些和cdn以及路由器相关,运营商以及光纤相关的小知识,前端同学应该了解一下的 目录 前言 1. CDN和路由器…

STM32-I2C通信在AT24C02的应用

AT24C02是一种失去电源供给后依旧能保持数据的储存器,常用来储存一些配置信息,在系统重新上电之后也可以加载。它的容量是2k bit的EEPROM存储器,采用I2C通信方式。 AT24C02支持两种写操作:字节写操作和页写操作。本实验中我们采用…