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

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 中不同网络模式的实现。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【taro react】---- 解决H5接入uni-app版本的IM

1. 问题 由于项目开发比较紧张,腾讯 IM 的接入就使用了 TUIKit 含UI集成方案,遇到的问题,uni-app的UI本来就是一个单独的项目,需要集成到现有的 Taro React 中,就只能作为一个独立的项目,不跳转时不影响原有…

在十四届蓝桥杯开赛前一星期开始复习

文章目录 十三届蓝桥杯国赛原题1.20222.钟表3卡牌4最大数字4.5 Dijkstra算法5出差 十三届蓝桥杯国赛原题 1.2022 #include<iostream> using namespace std;long long int f[2023][11][2023]; //表示前2022个物品选择10个物品&#xff0c;体积总和为2022的方案个数 ,,数…

入门编程其实也简单

随着信息技术的快速发展&#xff0c;编程已经成为一个越来越重要的技能。那么&#xff0c;我们该如何入门编程呢&#xff1f; 编程是指使用计算机语言编写计算机程序的过程。计算机程序是一系列指令的集合&#xff0c;这些指令告诉计算机要执行的操作。编程的目的是创建计算机…

Unity编辑器扩展-第二集-按钮排序/分组/放入右键菜单

第一集链接&#xff1a;Unity编辑器扩展-第一集-在菜单栏加入自己的按钮_菌菌巧乐兹的博客-CSDN博客 一、本节目标效果展示 1.按钮排序 变成 2.按钮分组 仔细看&#xff0c;有个灰色的杠杠 3.放入右键菜单 4.皮一下 二、按钮排序具体流程 第一集讲&#xff0c;如果想放入…

阿里云PAIx达摩院GraphScope开源基于PyTorch的GPU加速分布式GNN框架

作者&#xff1a;艾宝乐 导读 近期阿里云机器学习平台 PAI 团队和达摩院 GraphScope 团队联合推出了面向 PyTorch 的 GPU 加速分布式 GNN 框架 GraphLearn-for-PyTorch(GLT) 。GLT 利用 GPU 的强大并行计算性能来加速图采样&#xff0c;并利用 UVA 来减少顶点和边特征的转换和…

4.4.2 译码器

1. 学习基础知识&#xff1a;首先&#xff0c;我会了解译码器的基本概念、原理和应用。通过阅读教科书、参考资料或在线资源&#xff0c;我会学习译码器的工作原理、不同类型的译码器以及它们在电子系统中的应用场景。 2. 研究示例和练习题&#xff1a;为了更好地理解译码器的…

【Spring】透过Spring源码查看Bean的命名转换规则

近期在写Spring项目的时候&#xff0c;需要通过注解的形式去替代之前直接将Bean存放在Spring容器这种方式&#xff0c;以此来简化对于Bean对象的操作&#xff0c;但是这样无法通过准确的Id去获取到相应的Bean对象了 测试观察 首先&#xff0c;如果要将指定的对象存放到Spring中…

Unity入门6——光源组件

一、参数面板 二、参数介绍 Type&#xff1a;光源类型 Spot&#xff1a;聚光灯 Range&#xff1a;发光距离Spot Angle&#xff1a;光锥角度Directional&#xff1a;方向光Point&#xff1a;点光源Area&#xff08;Baked Only&#xff09;&#xff1a;面光源 仅烘焙。预先算好&…

操作教程:如何正确配置让EasyNVR级联至EasyNVS平台?

EasyNVS是EasyNVR的云管理平台&#xff0c;可实现内网监控上云&#xff0c;视频汇聚等功能。近期经常有用户咨询EasyNVR如何级联至EasyNVS平台进行云端统计和管理&#xff0c;在今天的文章中&#xff0c;我们来详细介绍一下。 1、配置EasyNVS 1&#xff09;运行EasyNVS之前&a…

回归预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于GRU-AdaBoost门…

C++【STL】之vector的使用

文章目录&#xff1a; vector介绍vector使用1. 默认成员函数1.1 默认构造1.2 拷贝构造1.3 析构函数1.4 赋值重载 2. 迭代器2.1 正向迭代器2.2 反向迭代器 3. 容量操作3.1 获取空间数据3.2 空间扩容3.3 大小调整3.4 空间缩容 4. 数据访问4.1 下标随机访问4.2 获取首尾元素 5. 数…

基于Java新生报到系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

Spring源码解密--事务篇

文章目录 一、事务的实现方式1、JDBC2、Spring基于xml配置编程式事务声明式事务 二、源码设计1、TransactionManager1&#xff09;TransactionManager2&#xff09;PlatformTransactionManager3&#xff09;ReactiveTransactionManager 2、TransactionDefinition3、Transaction…

Qt编写onvif工具(搜索/云台/预置位/OSD/录像存储)

一、前言 从最初编写这个工具开始的时间算起来&#xff0c;至少5年多&#xff0c;一直持续完善到今天&#xff0c;这个工具看起来小也不小大也不大&#xff0c;但是也是经历过无数个现场的洗礼&#xff0c;毫不夸张的说&#xff0c;市面上能够遇到的主流的厂商的设备&#xff…

攻防世界-Crypto-easychallenge

题目描述&#xff1a;将文件下载下来&#xff0c;只有一个pyc文件 1. 思路分析 先向chatgpt问下什么是pyc文件&#xff1a; OK&#xff0c;这里简单总结下&#xff1a; 1. pyc文件是python源码编译后的生成的二进制文件 2. 通过一些库可以逆向出pyc的源代码 那么我们需要做…

科一容易忘、容易混的点(二)

注意落石 高速应急车道用途&#xff1a;主要用于发生事故或故障时停车&#xff0c;以及专为救险所用的车道&#xff0c;被誉为高速公路的“生命通道” 注意 注意 扣9份场景&#xff1a; 城市快速路上 违法停车&#xff1b; 注意 交通事故逃逸&#xff0c; 不一定吊销驾驶证&a…

简单的一批的DockerFile构建(内附超详细docker学习笔记)

目录 介绍 DockerFile常用保留字指令 演示自定义构建java8版本centos docker专用学习笔记 超全 介绍 总结: 从应用软件的角度来看&#xff0c;Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段&#xff0c; * Dockerfile是软件的原材料 * Docker镜像是软件…

华为组播实验pim-dm

组播源配置&#xff1a; R1: [r1]dis current-configuration [V200R003C00] sysname r1 snmp-agent local-engineid 800007DB03000000000000 snmp-agent clock timezone China-Standard-Time minus 08:00:00 portal local-server load flash:/portalpage.zip drop illegal-mac…

Java调用Midjourney进行AI画图原生版抓包实现支持中文

用途介绍 Midjourney是一个目前优秀的AI画图工具&#xff0c;不挂梯无法直接访问 本代码主要用于搭建镜像站使用 适合人群 本代码不适合新手&#xff0c;建议使用过okhttp、且具有二开能力的同学使用~ 实现原理 通过调用发送信息接口发送请求&#xff0c;通过轮询房间消息…

一、PyTorch基础

一、PyTorch基本操作 1&#xff0c;导包 import torch2&#xff0c;查看版本号 torch.__version__ """ 2.0.1cpu """3&#xff0c;初始化(全零)矩阵 x torch.empty(3,2) x """ tensor([[7.2868e-44, 8.1275e-44],[6.7262e-4…