Docker:认识Docker Host/Container/none网络

文章目录

  • Docker Host网络
    • 认识Docker Host网络
    • 实际操作
      • 网络模式区别
      • 使用场景
  • Docker Container网络
    • 认识Docker Container网络
    • 操作实例
    • 使用场景
  • Docker None网络
    • 使用场景

Docker Host网络

认识Docker Host网络

Docker容器运行默认会分配独立的Network Namespace隔离子系统,但是如果基于Host网络模式,容器就不会有一个独立的Network Namespace,而是和宿主机公用一个Network Namespace,这就意味着容器不会虚拟对应的网卡和ip信息,而是直接使用宿主机的ip和端口

在这里插入图片描述

实际操作

首先创建容器c1使用Bridge网络

root@VM-24-7-ubuntu:~# docker container run --name c1 -itd busybox
fad6ed0ba5013aaf184e5bfd8a9254c203f2f466b49195c75d4b8826c536377c

创建容器c2使用Host网络

root@VM-24-7-ubuntu:~# docker container run --name c2 -itd --network=host busybox
3f144b8716af3f113333d1aced10d357e23d4f1eec3f945be074da9dd6b11d6c

网络模式区别

那这两个网络模式有什么区别呢?

Bridge 网络

  • 独立网络空间:Bridge模式为容器提供了一个独立的网络栈和IP地址空间。Docker会创建一个虚拟网桥(默认为docker0),并将容器连接到这个网桥上。每个容器在该网络中都有自己的IP地址,这些地址通常不同于宿主机的IP地址范围,形成了一个逻辑上隔离的网络环境。
  • 容器间隔离:在Bridge网络中,每个容器默认是相互隔离的,除非它们被连接到同一个自定义网络或者进行了特定的端口映射。这意味着容器之间需要通过IP地址或容器名(在支持的网络配置下)进行通信。
  • 外部访问:容器可以通过NAT转换经由宿主机访问外部网络。外部网络到容器的访问通常需要通过宿主机的端口映射来实现。

Host 网络

  • 共享宿主机网络栈:选择Host网络模式的容器将直接使用宿主机的网络栈,这意味着容器不再拥有独立的网络空间。容器将共享宿主机的网络设备、端口、IP地址等网络资源。
  • 网络透明性:在这种模式下,容器内的网络服务(如Web服务器)会直接监听在宿主机的网络接口上,没有网络地址转换(NAT)的开销,也无需进行端口映射。容器内的进程就像直接在宿主机上运行一样,可以直接通过宿主机的IP地址和端口对外提供服务或访问外部资源。
  • 无隔离:因为容器与宿主机共享网络命名空间,容器内的网络活动对宿主机完全透明,反之亦然,这也意味着容器间没有网络隔离的概念,任何容器内的服务都可以直接访问宿主机网络上的所有服务,同时也要小心处理端口冲突问题。

同时,需要注意的是:如果现在有一个容器c1用的是Host网络,那么在他上面部署服务,占据的是我真实宿主机上的端口号,例如,如果在容器c1中运行一个Web服务监听80端口,那么这个Web服务对于外部网络而言,就是直接通过宿主机的80端口访问的。因此,如果宿主机上已经有其他服务占用了80端口,那么容器内的服务将无法正常启动,或者会导致端口冲突。

使用Host网络模式时,需要特别注意端口占用的问题,并确保容器内的服务配置不会与宿主机上的服务产生冲突。同时,由于网络的透明性,这种方式也提供了最低的网络延迟,适合于对网络性能有严格要求的场景或者在调试过程中需要直接与宿主机网络交互的情况。

那这两个有什么使用场景?

使用场景

在Bridge网络在通信的时候需要进行端口转发以及NAT地址转换,这会消耗掉一些资源以及性能,而如果使用Host网络最大的好处就是性能好,如果容器对于网络传输效率有很高的需求场景下,那么选择Host网络会更好,这会减少很多成本

Docker Container网络

认识Docker Container网络

Docker Container的other container网络模式是Docker中一个比较特殊的网络模式,被称作是other container模式,这个模式下的Docker Container,会使用其他容器的网络环境,之所以特别,是因为这个模式下的网络隔离环境会处于在Bridge桥接模式和Host模式之间,Docker Container共享其他容器的网络环境,起码在这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离

这样的网络模式,如下所示:

在这里插入图片描述
Docker Container的other container网络模式的基本逻辑是:

  1. 查找other container的网络Namespace
  2. 将新创建的Docker Container的Namespace使用other Container的Namespace

这一点其实和C++的命名空间比较像,这里就不多进行赘述了

操作实例

创建一个容器

root@VM-24-7-ubuntu:~# docker container run -itd --name netcontainer busybox
e33f58442fbfe86430ed0ac57b9626ae12d5082a816bbc6a3a0ad33709ad37fe

使用netcontainer的网络创建另外一个容器

root@VM-24-7-ubuntu:~# docker run -itd --name netcontainer2 --network container:netcontainer busybox
7d4a54e662b96563566257b3d06f904191825811836ec729d423d6dd019cbe9c

进入两个容器,看一下ip信息

此时会发现,ip信息和mac地址是一样的

root@VM-24-7-ubuntu:~# docker exec -it netcontainer ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
root@VM-24-7-ubuntu:~# docker exec -it netcontainer2 ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0

暂停容器1,再看容器2

root@VM-24-7-ubuntu:~# docker stop netcontainer
netcontainer
root@VM-24-7-ubuntu:~# docker exec -it netcontainer2 ifconfig
lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

此时就会发现,网卡信息消失了

再重新启动容器1和容器2

现在就又恢复了:

root@VM-24-7-ubuntu:~# docker restart netcontainer netcontainer2
netcontainer
netcontainer2
root@VM-24-7-ubuntu:~# docker exec -it netcontainer2 ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:9 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:806 (806.0 B)  TX bytes:0 (0.0 B)

使用场景

这种模式下的Docker Container可以借助localhost来访问Namespace下的其他容器,传输效率极高,但是会导致存在依赖关系,如果有一个重启了,另外一个就不可用了

Docker None网络

None网络就是没有网络,除了本地回环以外没有任何内容

这个还是很简单的,这里就不多说了

使用场景

针对于一些要求安全性非常高,并且还不用联网的应用,用None网络比较合适

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

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

相关文章

不破不立,B站终于跳出“舒适圈”?

哔哩哔哩已经很久没有这么振奋人心的时刻了。 6月19日,哔哩哔哩当日股价涨超18%,最高达到145.6元每股,时隔11个月,再次回归高位。从时间线上看,这次的股价大涨明显与哔哩哔哩刚(以下简称“B站”&#xff0…

基于单电阻采样的电流重构

1. 单电阻采样电流重构原理 图1(a)所示是电压型三相逆变器,定义三相开 关信号为 Sa 、Sb 、Sc 。当 Sa = 1 表示A相上桥臂导 通,下桥臂关断;Sa = 0 表示相反。三相逆变器采用 SVPWM调制方式控制,有8种开关工作状态,包括 6个非零电压矢量V1 ~ V6 和2个零电压矢量V0 、V7…

约束求解器方案设计

1.约束求解介绍 给定一个几何对象(点、直线段、圆、圆弧、平面等)的集合G和一个关于集合G中几何对象之间约束(点的位置、直线段的长度、圆弧对应的圆心角角度、垂直、相切等) 的集合C,则在二元组(G,C)中根…

入门Ansible常用模块

自动化运维Devops-Ansible Ansible是新出现的自动化运维工具,基于Python 开发,集合了众多运维工具(puppet 、cfengine、chef、func、fabric)的优点,实现了批量系统配置 、批量程序部署、批量运行命令 等功能。Ansible…

58-DOS与DDOS分析(正常TCP会话与SYN Flood攻击、ICMP Flood 攻击、SNMP放大攻击等)

目录 正常 TCP 会话与 SYN Flood 攻击 1、正常的三次握手过程: 2、 SYN Flood 攻击 一、攻击windows系统: 二、攻击web网站 : 拒绝服务攻击工具-Hping3-Syn Flood 攻击 拒绝服务攻击工具--Hping3--ICMP Flood 攻击 sockstress攻击 So…

不在枯燥用第三方库简化你的编程之路

简介: Python作为一种多用途的编程语言,得益于其丰富的第三方库和框架,极大地拓展了其功能和应用领域.这些工具不仅提升了开发效率,也使得Python在各个领域展现出色的表现. 今天我们就来聊一聊Python 第三方库是由第三方开发者编写并共享的库,可用于扩展 Python 的…

Unity【入门】光源、物理、音效系统

核心系统 文章目录 核心系统1、光源系统基础1、光源组件2、光面板相关 2、物理系统之碰撞检测1、刚体 RigidBody2、碰撞器 Collider3、物理材质4、碰撞检测函数5、刚体加力 3、音效系统1、音频文件导入2、音频源和音频监听器脚本3、代码控制音频源4、麦克风输入相关 1、光源系统…

智慧办公新篇章:可视化技术引领园区管理革命

随着科技的飞速发展,办公方式也在经历着前所未有的变革。在这个信息爆炸的时代,如何高效、智能地管理办公空间,成为了每个企业和园区管理者面临的重要课题。 智慧办公园区作为未来办公的新趋势,以其高效、便捷、智能的特点&#x…

Redis 7.x 系列【2】单机部署

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. Windows2. Linux 1. Windows Redis作为一个高性能的内存数据库,和Linu…

数据结构6---树

一、定义 树(Tree)是n(n>0)个结点的有限集。当n0时成为空树,在任意一棵非空树中: 1、有且仅有一个特定的称为根(Root)的结点; 2、当n>1时,其余结点可分为m(m>日)个互不相交的有限集T1、T2、...、 Tm,其中每一个集合本身又是一棵树,并且称为根的…

Ant Design Vue Cascader 级联选择 错位问题

当Cascader 多个的时候 对应的下列会错位 如果滚动 他不会跟着元素 而是会跟着屏幕滚动&#xff0c;如下效果 解决方法 在Cascader 标题添加 getPopupContainer 属性监听对应的位置&#xff0c;返回对应的元素 <a-cascader class"smart-width-100 " v-model:…

NetSuite 不同类型Item的公司间交易科目的设置

我们知道&#xff0c;NetSuite中有Intercompany Preferences的设置&#xff0c;如下所示&#xff0c;分别涉及到公司间应收、公司间应付、公司间收入、公司间费用以及公司间成本共5个科目&#xff0c;非常明确清晰。 最近用户遇到的场景是&#xff0c;如果是Non-Inventory Item…

ERP系统品牌大比拼:哪款产品更适合您的企业?

ERP集成了企业的销售、采购、生产、财务等各个环节&#xff0c;实现了资源的优化配置和信息的实时共享。然而&#xff0c;面对市场上琳琅满目的ERP系统产品&#xff0c;许多企业却陷入了选择的困境。 “哪款ERP系统更适合我的企业呢&#xff1f;”这或许是每一位企业决策者心中…

TrueNAS系统在ARM平台上的移植

随着家庭及中小型企业对存储和共享需求的日益增长&#xff0c;高效、可靠的文件存储系统成为支撑各类应用的关键。 在众多存储系统中&#xff0c;TrueNAS以其卓越的数据完整性与可靠性、简洁高效的应用程序部署和管理、灵活的虚拟化应用添加能力&#xff0c;以及出色的可用性&a…

@ModelAttribute

基础知识 1.ModelAttribute注解源码&#xff0c;从中可以知道&#xff0c;该注解可以标注在参数上和方法上 2.应用场景&#xff1a;先大致有个概念&#xff0c;可以用来存储项目根路径 3.介绍&#xff1a;ModelAttribute 是 Spring 框架中的一个注解&#xff0c;用于在 Spring …

G7 - Semi-Supervised GAN 理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识模型实现引用、配置参数初始化权重定义算法模型模型配置模型训练训练模型 模型效果总结与心得体会 理论知识 在条件GAN中&#xff0c;判别器只用…

Reddit、Discord等社媒网站抓取总结:如何更高效实现网页抓取?

有效的网络抓取需要采取战略方法来克服挑战并确保最佳数据提取。让我们深入研究一些关键实践&#xff0c;这些实践将使您能够掌握复杂的网络抓取。 一、了解 Web 抓取检测 在深入探讨最佳实践之前&#xff0c;让我们先了解一下网站如何识别和抵御网络爬虫。了解您在这一过程中…

隐藏element的DateTimePicker组件自带的清空按钮

管理台页面使用到el-date-picker&#xff0c;type datetimerange 但是组件自带了清空按钮&#xff0c;实际上这个控件业务上代表开始时间和结束时间是一个必填选项&#xff0c;所有想要把清空按钮隐藏掉。 查看了文档https://element.eleme.io/#/zh-CN/component/datetime-p…

如何使用k8s安装nexus3呢

百度云盘地址 链接&#xff1a;https://pan.baidu.com/s/1YN1qc2RvzTU3Ba6L_zCTdg?pwd5z1i 提取码&#xff1a;5z1i 下载后上传到本地服务器 docker load -i nexus3 创建 nexus-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nexus3-deployment spec…

visualbox搭建linux环境双网卡配置

文章目录 1. 双网卡模式简介2. 网络模式配置2.1 virtualBox说明2.2 host-only网络模式配置2.3 NAT网络模式配置 3. 虚拟主机网络设置3.1 网卡一设置3.2 网卡二设置 4. 网卡配置5. ssh访问 本篇的目的是为了搭建本地的linux测试环境用。 1. 双网卡模式简介 双网卡网络模式简介 …