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

news2024/11/24 6:49:57

文章目录

  • 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.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions: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.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions: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.coloradmin.cn/o/1846380.html

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

相关文章

计算机网络 交换机的安全配置

一、理论知识 1.交换机端口安全功能介绍 交换机端口安全功能是针对交换机端口进行安全属性的配置,以控制用户的安全接入。主要包括以下两种配置项: ①限制交换机端口的最大连接数:控制交换机端口连接的主机数量;防止用户进行恶…

微信小程序笔记 四!

协同工作和发布 - 协同工作 1. 了解权限管理需求 在中大型的公司里,人员的分工非常仔细:同一个小程序项目,一般会有不同岗位、不同角色的员工同时参与设计与开发。 此时出于管理需要,我们迫切需要对不同岗位、不同角色的员工的…

游戏录屏软件,游戏录屏,3款软件推荐

“最近迷上了电脑游戏,想把自己在游戏中的精彩瞬间给记录下来。看到网上其他人录制的游戏都十分高清且有趣。想问问大家都是用什么软件进行游戏录屏的?有推荐的软件吗?” 在游戏生活中,相信你也一定想要记录下和队友在游戏中的欢…

应用篇| 深入浅出LLM应用之RAG

相信很多人都使用过LLM大模型,但是现有大模型或多或少都有以下问题: LLM幻觉问题:从《【小白入门篇1】GPT到底是怎样练成?》我们知道虽然大模型现在能力很强,但是本质就是在做文字接龙,而且每次接龙都具有随机性, 导致模型有时候…

工商业光伏项目怎么做?

随着全球对可再生能源的关注度不断提高,工商业光伏项目已成为企业实现绿色转型、降低能耗成本的重要途径。本文将详细介绍工商业光伏项目的开发流程,以及项目实施过程中需要注意的关键点。 一、项目前期准备 在启动工商业光伏项目之前,首先要…

windows下的 GammaRay安装和使用教程

GammaRay功能: 可用于查看运行时的程序对象状态信息以及事件队列 安装步骤: 1.官网下载地址: GammaRay下载地址 下载对应的qt版本适配版本 2.解压包gammaray-2.11.2.zip 解压后新建一个build目录为接下来的编译做准备 3.打开Install.txt 看…

【自组网数据链电台】测试软件

版本1 版本2 版本3 版本4 版本5 版本6 版本7

苹果cms10影视网整站源码下载/苹果cms模板MXone Pro自适应影视电影网站模板

下载地址:苹果cms10影视网整站源码下载/苹果cms模板MXone Pro自适应影视电影网站模板 模板带有夜间模式、白天晚上自动切换,有观影记录、后台设置页。全新UI全新框架,加载响应速度更快,seo更好,去除多余页面优化代码。…

双向滑动选择器

插件地址:https://ext.dcloud.net.cn/plugin?id3940 注意: 当改变值是,让滑块自动滑动需要调用: this.$refs.powerSlider.updateValue(that.tempPowerValue[0], that.tempPowerValue[1], false); <view style"width: 90%;margin: 15px"><cj-slider ref…

基坑监测的内容及其重要性概述

随着城市建设的不断深入&#xff0c;基坑工程作为基础建设的重要组成部分&#xff0c;其安全性和稳定性成为了关注的重点。为了确保基坑施工过程中的安全&#xff0c;基坑监测显得尤为重要。本文将围绕基坑监测的内容展开&#xff0c;旨在帮助读者更好地理解其重要性及实施方法…

RK3568技术笔记十五 固件烧写

安装驱动 解压DriverAssitant_v5.11.zip压缩包后&#xff0c;在DriverAssitant_v5.11文件夹中找到DriverInstall.exe文件&#xff0c;双击打开DriverInstall.exe。如下图所示&#xff1a; 点击驱动安装&#xff0c;等待驱动安装完成&#xff0c;弹出如下所示对话框&#xff0c;…

巧用newSingleThreadExecutor让异步任务顺序跑

背景 Flume 是 Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统 。一个用来控制 Flume 采集任务的 Web 应用&#xff0c;需要对任务进行管理&#xff0c;主要操作「启动、停止、新建、编辑、删除」&#xff0c;本质就是对…

【2024.6.21】今日科技时事:科技前沿大事件

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

RuoYi Swagger请求401

问题描述&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 使用ruoyi-vue分离版&#xff0c;访问swagger&#xff0c;发现接口都调用失败&#xff1a;401 解决方案&#xff1a; 最终解决问题如下步骤&#xff1a; 1、 调用swagger中的接口&#xff0c;报错&a…

氢氧化铝佐剂,完美替代进口品牌明矾佐剂

氢氧化铝佐剂 氢氧化铝佐剂是使用历史最为悠久的疫苗佐剂&#xff0c;已有近百年历史&#xff0c;广泛用于各种人用疫苗和兽用疫苗。氢氧化铝佐剂能够极大地促进体液免疫&#xff08;抗体&#xff09;反应和TH2类细胞免疫反应。 用途 1、免疫各种实验动物制备多克隆或单克隆抗…

CSS阴影优化气泡框样式

<body> <div class"pop">气泡框</div> </body>body{display: flex;justify-content: center;align-items: center;height: 100% } .pop{display: flex;justify-content: center;align-items: center;background: #409eff;width: 150px;heigh…

什么是OAuth2分布式授权协议?

今天我将和大家一起探讨在系统安全领域非常常见的一种授权协议&#xff0c;这就是OAuth2协议&#xff0c;这个协议通常用于对请求访问进行安全控制。在引入这个协议之前&#xff0c;让我们先来回顾两个基本概念&#xff0c;一个是认证&#xff0c;一个是授权。这两个概念比较容…

python18 正则表达式

python18 正则表达式 正则表达式 re.match(),re.search(),re.findall(),re.sub(),re.split() 元字符 具有特殊意义的专用字符 导入模块 improt re代码 正则表达式 re.match(),re.search(),re.findall(),re.sub(),re.split() 元字符 具有特殊意义的专用字符 导入模块 improt rei…

德国慕尼黑智慧能源展去了多少家国内充电企业?

无论是为了突破本土市场的局限&#xff0c;出海开拓更广阔的国际市场需求&#xff0c;增加销售额&#xff0c;分散市场风险&#xff0c;还是为了通过出海获得国际经验后以反哺国内市场。 各大行业都出现了“要么出海&#xff0c;要么出局”的声音。扬帆出海&#xff0c;参与全球…

oracle开放某些视图给特定用户,查询报视图不存在问题

以sysdba身份登录到Oracle数据库。 创建新用户。例如&#xff0c;创建一个名为new_user的用户&#xff0c;密码为password&#xff1a; CREATE USER new_user IDENTIFIED BY password;为新用户分配表空间和临时表空间。例如&#xff0c;将表空间users和临时表空间temp分配给新…