docker 容器的网络类型

news2024/12/21 14:08:35

目录

vmware的三种网卡模式(网络模式)

docker里的四种网络类型 

参考资料:Docker四种网络模式 - 简书 (jianshu.com)

1、桥接模式(默认情况)

2、host模式

3、none模式

4、container模式

创建桥接模式网卡

网卡连接

Overlay的使用

参考文档:Docker Overlay 工作原理 - kevin.Xiang - 博客园 (cnblogs.com)

Overlay的底层原理VXLAN 

vxlan网络通信创建步骤:


docker 删除全部nginx容器 命令

[root@mysql ~]# docker rm $(docker ps -a | awk '/nginx/ {print $NF}')
clay-nginx-2
clay-nginx-1
clay-nginx
[root@mysql ~]# 

vmware的三种网卡模式(网络模式)

        1、桥接模式  bridge  --》 vmware 0

        2、hostonly   --》vmware1

        3、nat模式  --》vmnet8

参考资料:(50条消息) 计算机网络 SNAT/DNAT 部署(三种VMware网卡模式)_snat部署_Claylpf的博客-CSDN博客

docker里的四种网络类型 

参考资料:Docker四种网络模式 - 简书 (jianshu.com)

1、桥接模式(默认情况)

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

2、host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。 

3、none模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

4、container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

因此当我们每启用一个docker容器,宿主机就会自动产生一个虚拟网卡veth

而veth开头的网卡是docker容器上对应的网卡,每启动一个容器就会创建一个虚拟网络接口(网卡)

创建桥接模式网卡

当然我们也可以自己创建一个桥接类型的网卡

[root@mysql ~]# docker network create --driver bridge clay  #创建一个桥接类型的网卡
2d136729908f5685307f14f105f4dc17f8d15278427197073d318126ef5cd210
[root@mysql ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
73c5a59652f4   bridge    bridge    local
2d136729908f   clay      bridge    local
f2c76b408dca   host      host      local
27c1d8f3ca8d   none      null      local
[root@mysql ~]# 

我们使用ip add可以查看增加了 br-2d136729908f这块网卡,而这就代表了桥接模式的网卡

30: br-2d136729908f: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:55:f9:46:77 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-2d136729908f

我们如何创建docker容器连接到这块新的网卡上去呢

网卡连接

#创建一个容器,定义它连接的网卡是clay网卡
[root@mysql ~]# docker run -d -p 8809:80 --name lpf-nginx-1 --network clay nginx
8811b353441172680020bfd8a2100cf2793bbb9f0f86e836fe63253cd8078e9f
[root@mysql ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                   NAMES
8811b3534411   nginx     "/docker-entrypoint.…"   9 seconds ago    Up 7 seconds    0.0.0.0:8809->80/tcp, :::8809->80/tcp   lpf-nginx-1
3585af7fab56   nginx     "/docker-entrypoint.…"   18 minutes ago   Up 18 minutes   0.0.0.0:8805->80/tcp, :::8805->80/tcp   clay-nginx-3
98f179ae4afa   nginx     "/docker-entrypoint.…"   19 minutes ago   Up 19 minutes   0.0.0.0:8804->80/tcp, :::8804->80/tcp   clay-nginx-2
905d0e207a1f   nginx     "/docker-entrypoint.…"   19 minutes ago   Up 19 minutes   0.0.0.0:8803->80/tcp, :::8803->80/tcp   clay-nginx-1
[root@mysql ~]# ip add   #查看网络接口
30: br-2d136729908f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:55:f9:46:77 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-2d136729908f
       valid_lft forever preferred_lft forever
    inet6 fe80::42:55ff:fef9:4677/64 scope link 
       valid_lft forever preferred_lft forever
32: veth591b578@if31: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-2d136729908f state UP group default 
    link/ether 86:a9:4a:28:9b:8d brd ff:ff:ff:ff:ff:ff link-netnsid 3
    inet6 fe80::84a9:4aff:fe28:9b8d/64 scope link 
       valid_lft forever preferred_lft forever

Overlay的使用

overlay是来实现跨主机docker容器之间的通信

需要使用swarm来进行,它是docker的一个集群化管理软件

Overlay网络实际上是目前最主流的容器跨节点数据传输和路由方案

参考文档:Docker Overlay 工作原理 - kevin.Xiang - 博客园 (cnblogs.com)

Overlay的底层原理VXLAN 

vlan: 虚拟局域网  :可以隔离广播,对网络进行隔离

        一个vlan一个网段(不到5000个可以使用的vlan)

而vxlan: 其实就是对传统vlan的扩展

VXLAN是一种虚拟化网络技术,全称为Virtual eXtensible LAN,可以实现虚拟网络之间的互连,将底层物理网络和上层虚拟化网络进行隔离。VXLAN可以扩展现有的局域网(LAN)范围,在数据中心内构建规模更大、可扩展性更好的虚拟网络。

VXLAN使用了24位的VNI(VXLAN Network Identifier)标识符,可以支持1600万个唯一的网络标识。这样可以在大规模虚拟化环境中提供足够的标识符,使得不同的虚拟网络之间相互独立,且可以跨越多个物理网络互联。

VXLAN可以通过隧道技术将虚拟网络封装在物理网络之中,使得虚拟机可以像在同一个物理网络内一样直接通信。同时,它还支持多路径ECMP等负载均衡技术,提高了网络的带宽利用率和容错能力。

通过VXLAN技术,用户可以更加灵活地配置和管理虚拟网络。它允许用户在同一物理网络基础上创建多个虚拟网络,并按照需要动态调整虚拟网络的大小和位置。此外,它还支持网络功能虚拟化 (NFV),可以快速实现网络功能的部署和调整。

总之,VXLAN是一种基于隧道技术的虚拟化网络技术,可以扩展现有的局域网范围,提高数据中心内虚拟网络的可扩展性和灵活性。

vxlan网络通信创建步骤:

 

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

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

相关文章

TensorFlow Core—基本分类:对服装图像进行分类

现在人工智能很火的&#xff0c;看到了这篇文章&#xff0c;给自己普及一下基础知识&#xff0c;也分享给大家&#xff0c;希望对大家有用。 本指南将训练一个神经网络模型&#xff0c;对运动鞋和衬衫等服装图像进行分类。即使您不理解所有细节也没关系&#xff1b;这只是对完…

「FPGA」基本时序电路元件——锁存器和触发器

「FPGA」基本时序电路元件——锁存器和触发器 文章目录 「FPGA」基本时序电路元件——锁存器和触发器1. 最简单的双稳态元件2. SR锁存器3. D锁存器&#xff08;data latch&#xff09;4. D触发器5. 寄存器&#xff08;register&#xff09; FPGA是一种数字电路实现的方式&#…

算法设计与分析知识点整理

文章目录 前言一、算法的基本概念1.算法的基本特征2.算法设计需要满足的目标3.算法和程序的区别 二、时间复杂度计算1.大O表示法2.最坏和平均情况3.根据递归方程求解时间复杂度3.1 根据递归树求解3.2 根据主方法求解 三、六大算法1.分治法1.1 算法思路1.2 适用范围1.3 基本步骤…

【MySql】聚合函数group byOJ题目

文章目录 聚合函数分组group by使用OJ题目描述描述 本篇主要介绍mysql的聚合函数和group by的使用&#xff0c;最后是OJ题目的练习。 聚合函数 MySQL中的聚合函数用于对数据进行计算和统计&#xff0c;常见的聚合函数包括下面列举出来的聚合函数&#xff1a; 函数 说明…

python开发构建深度学习分类模型,探索AI在地震事件分类中的应用于可解释性分析

最近看到了一篇蛮有意思的论文&#xff0c;如下&#xff1a; 将深度学习开发应用到了地震事件分析分类领域中去了&#xff0c;感觉挺有意思&#xff0c;就想着也来自己体验下看看&#xff0c;这里的数据集是网上找到的一个地震波应该是仿真实验的数据集&#xff0c;我们先来看下…

Pytest教程__Hook函数pytest_addoption(parser):定义自己的命令行参数(14-1)

考虑场景&#xff1a; 我们的自动化用例需要支持在不同测试环境运行&#xff0c;有时候在dev环境运行&#xff0c;有时候在test环境运行&#xff1b;有时候需要根据某个参数不同的参数值&#xff0c;执行不同的业务逻辑&#xff1b; 上面的场景我们都可以通过“在命令行中输入…

浏览器之BFC

浏览器之BFC 什么是BFCBFC的特性特性1&#xff1a;BFC会阻止垂直外边距折叠①相邻兄弟元素margin重叠问题②父子元素margin重叠问题 特性2&#xff1a;BFC不会重叠浮动元素BFC可以包含浮动----清除浮动 什么是BFC Block formatting context直译为"块级格式化上下文Block …

Python进阶语法之字符串

Python进阶语法之字符串 当我们处理文本数据时&#xff0c;字符串是不可避免的数据类型。Python 提供了很多字符串方法&#xff0c;它们可以帮助我们更方便地操作和处理字符串。在本篇博客中&#xff0c;我们将深入探讨 Python 字符串。 字符串的基本操作 在深入了解字符串…

亚马逊云科技 | Summit - 中国峰会

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 亚马逊云科技 | Summit - 中国峰会 亚马逊云科技提供全球覆盖广泛、服务深入的云平台&#xff0c;全球数据中心提供超过 200 项功能齐全的服务连续 11 年被 Gartner 评…

【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

目录 0.环境 1.适用场景 2.pandas.merge()函数详细介绍 3.名词解释“数据对齐”&#xff08;来自chatGPT3.5&#xff09; 4.本文将给出两种数据对齐的例子 1&#xff09;dataframe类型数据和dataframe类型数据对齐&#xff08;对齐NAME列&#xff09;&#xff1b; 数据对…

[游戏开发]Unity颜色矫正无障碍方案

[目录] 0. 前言1. 颜色矫正2. 线性变换Shader2. 颜色纠正参数3. 摄像机后处理4. 效果5. 结束咯 0. 前言 之前有在关注色盲视觉纠正问题&#xff0c;最近在调整游戏的时候就打算把这个用上。 色弱色盲&#xff0c;这其实算是一种误称吧&#xff0c;只是人类中的少数派&#xf…

保护您的数据与ManageEngine Log360

在当今数字时代&#xff0c;网络安全成为了企业和组织不可忽视的重要议题。随着信息技术的发展和互联网的普及&#xff0c;企业面临着越来越多的网络威胁和数据泄露的风险。为了保护重要的数据资产和防止潜在的攻击&#xff0c;日志管理和事件关联成为了至关重要的一环。 Mana…

IIS安装ARR(Application Request Router)负载均衡扩展

IIS7.5安装ARR(Application Request Router)负载均衡扩展 本文主要记录我在IIS中安装ARR的全流程&#xff0c;本文参考了网上一些教程&#xff0c;但可能时间关系&#xff0c;与一些早期文章所述有所出入。 花了我半天的时间才最终安装成功&#xff0c;因此这里做一个记录。本…

立体解析Fiddler Filters:让你快速捕获和过滤网络请求

如果要对当前Fiddler的抓包进行过滤&#xff08;如过滤掉与测试项目无关的抓包请求&#xff09;&#xff0c;那功能强大的 Filters 过滤器能帮到你。 如果你想学习Fiddler抓包工具&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的Fiddler抓包…

动态规划算法(多状态dp1)

动态规划算法专辑之多状态dp问题&#xff08;1&#xff09; 一、什么是多状态 多状态dp问题&#xff0c;指一个规模问题下存在多种状态&#xff0c;我们需要联合关注多种状态间的相互转移&#xff0c;才可以求解目的问题。 多状态问题可以理解为有限状态机&#xff0c;在有限…

节省时间、提升效率——Jetpack关爱你的摸鱼时间

JetPack Jetpack 是一个由 Google 提供的 Android 应用开发库集合。它旨在简化 Android 应用程序开发过程&#xff0c;提供一系列的库和工具&#xff0c;帮助开发者快速构建高质量、健壮、可扩展的 Android 应用。 Jetpack 包含多个组件&#xff0c;每个组件都专注于不同的功…

Nginx 的reload,升级以及关闭流程

一、reload流程 1 向master进程发送HUP信号&#xff08;reload命令&#xff09; 2 master进程校验配置语法是否正确&#xff1b; 3 master打开可能引入的新的监听端口&#xff1b; 4 master用新的配置文件启动新的worker子进程&#xff1b; 5 启动新的worker子进程之后&#x…

小马赠书【第8期】清华社 618 IT BOOK 多得活动(送书5本)

本期 敬 之 共精心挑选了 15 本 IT 相关书籍&#xff0c;包含 前端、后端、数据分析、人工智能、python 等各个领域。关于如何参与等具体活动信息请看活动详情页&#xff0c;以下是 15 本 IT 书籍介绍&#xff1a; 活动详情页&#xff1a;小马赠书【第8期】 1. 《Linux设备驱动…

怎么入手性能测试,重点以及各项流程

之前在性能测试学习路线里&#xff0c;提到过《软件性能测试、分析与调优实践之路》这本书。 昨天看到之前自己记的读书笔记&#xff0c;整理一下发出来&#xff0c;希望对读者有所帮助。 网上关于性能测试的文章大多数时间比较久远&#xff0c;或者知识点比较散&#xff0c;…

南大一作!科学家发现全新量子态 | Nature速递

光子盒研究院 马萨诸塞大学助理教授Tigran Sedrakyan在内的一个物理学家团队最近在《自然》杂志上宣布&#xff0c;他们已经发现了一种新的物质阶段——“手性玻色液态(chiral Bose-liquid state)”&#xff0c;这一突破为理解物理世界本质的古老努力开辟了一条全新道路。 团队…