小白到运维工程师自学之路 第六十六集 (docker 网络模型)
一、概述
Docker网络模型是指Docker容器在网络中的通信方式和组织结构。Docker容器通过网络连接,使得容器之间可以相互通信,并与主机和外部网络进行交互。
在Docker中,有几种不同的网络模型可供选择:
1、主机模式(Host mode):容器与主机共享网络命名空间,容器中的网络直接映射到主机网络上。这意味着容器可以使用主机上的网络配置,并且容器中的服务可以通过主机的IP地址和端口进行访问。
2、桥接模式(Bridge mode):Docker会创建一个虚拟的网络桥接接口,称为docker0,容器加入这个桥接接口后,可以通过桥接接口与其他容器和宿主机进行通信。每个容器都分配一个唯一的IP地址,并且可以使用Docker提供的DNS服务进行容器之间的域名解析。
3、Overlay模式(Overlay mode):用于在多个主机上创建一个覆盖网络,允许分布式容器在不同的主机上进行通信。此模式使用虚拟的网络隧道和路由来连接不同的主机上的容器,并提供透明的跨主机通信。
4、MacVLAN模式(MacVLAN mode):此模式允许将容器直接连接到物理网络上,每个容器会分配一个唯一的MAC地址,并与主机网络共享IP地址。这样容器就可以像主机上的其他设备一样与网络进行交互。
5、None模式(None mode):在此模式下,容器不会与任何网络进行连接,完全与外部网络隔离。
这些网络模型可以根据应用场景和要求选择合适的模式来配置Docker容器的网络连接。
二、网络模型
1、主机模式(Host mode)
Docker底层使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptables规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Root Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。出于安全考虑不推荐使用这种网络模式。
我们在192.168.77.123/24的机器上用Host模式启动一个含有WEB应用的Docker容器,监听TCP 80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用192.168.200.111:80即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
docker run -itd --net=host --name=host busybox
docker exec -it host ifconfig

可以看到容器和宿主机的IP是一样的
2、container模式
这个模式可以指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
使用--net=container:container_id/container_name,多个容器使用共同的网络看到的ip是一样的。
docker run -itd --name=con1 busybox
docker exec -it con1 ifconfig
docker run -itd --net=container:con1 --name=con2 busybox
docker exec -it con2 ifconfig

可以看到两个容器的IP是一样的
3、none模式
在这种模式下,Docker容器拥有自己的Network Namespace,但是并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
使用--net=none指定,这种模式下不会配置任何网络。
docker run -itd --name=none --net=none busybox
docker exec -it none ifconfig

4、bridge模式
bridge模式是Docker默认的网络设置,属于一种NAT网络模型,Docker daemon在启动的时候就会建立一个docker0网桥(通过-b参数可以指定),每个容器使用bridge模式启动时,Docker都会为容器创建一对虚拟网络接口(veth pair)设备,这对接口一端在容器的Network Namespace,另一端在docker0,这样就实现了容器与宿主机之间的通信。

在bridge模式下,Docker容器与外部网络通信都是通过iptables规则控制的,这也是Docker网络性能低下的一个重要原因。使用iptables -vnL -t nat可以查看NAT表,在Chain Docker中可以看到容器桥接的规则。

5、Overlay模式
这是Docker原生的跨主机多子网的网络模型,当创建一个新的网络时,Docker会在主机上创建一个Network Namespace,Network Namespace内有一个网桥,网桥上有一个vxlan接口,每个网络占用一个vxlan ID,当容器被添加到网络中时,Docker会分配一对veth网卡设备,与bridge模式类似,一端在容器里面,另一端在本地的Network Namespace中。
容器A、B、C都在主机A上面,而容器D、E则在主机B上面,现在通过Overlay网络模型可以实现容器A、B、D处于同一个子网,而容器C、E则处于另一个子网中。

以上就是docker网络模型
如有错误欢迎各位大佬批评指正,我们共同进步
相关文章:
小白到运维工程师自学之路 第六十六集 (docker 网络模型)
一、概述 Docker网络模型是指Docker容器在网络中的通信方式和组织结构。Docker容器通过网络连接,使得容器之间可以相互通信,并与主机和外部网络进行交互。 在Docker中,有几种不同的网络模型可供选择: 1、主机模式(H…...
Go和Java实现建造者模式
Go和Java实现建造者模式 下面通过一个构造人身体不同部位的案例来说明构造者模式的使用。 1、建造者模式 建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了 一种创建对象的最佳方式。 一个 Builder 类会…...
AutoSAR系列讲解(实践篇)11.6-服务映射(自顶向下)
目录 一、配置Service Needs 二、配置Cfg同步 我们在下一节的实验课中讲解这里的具体配置流程,本节主要讲一下这些配置的大致流程和配置项的作用。NvBlockSwComponents是一个可选项, 我们这里开始不使用NvBlockSwComponents,将我们的Application SWC直接和NvM通过C/S连接起…...
EXCEL, 用if({1,0,0} ...) 实现把给定的区域,输出为任意你想要的矩阵,数组区域!
目录 1 原材料:这样的一个区域 工具 if({1,0,0}) 数组公式 1.1 原始数据 1.2 原理 if(0/1,t-value,f-value)---变形--->if({},range1,range2) 1.2.1 if(0/1,t-value,f-value)---变形--->if({},range1,range2) 1.2.2 原理1: if 数组原理&#…...
c++实现Qt对象树机制
文章目录 对象树是什么使用对象树的好处使用c实现对象树 对象树是什么 我们常常听到 QObject 会用对象树来组织管理自己,那什么是对象树? 这个概念非常好理解。因为 QObject 类就有一个私有变量 QList<QObject *>,专门存储这个类的子…...
骨传导蓝牙耳机排行榜,精选五款排名最靠前的耳机
不知道大家在挑选耳机的时候会考虑什么?有些人会考虑耳机的功能、有些会考虑价格,还有的会考虑品牌等因素,但是综合下来,我们作为消费者无非是想要一款音质很好,而佩戴又很适合我们的耳机~我们年轻人作为耳…...
JDBC用法小结
JDBC用法小结 本文实例总结了JDBC的用法。分享给大家供大家参考。具体分析如下: DriverManger:驱动管理器类 要操作数据库,必须先与数据库创建连接,得到连接对象 public static Connection getConnection(String url, String username,Str…...
MySQL 数据表在什么情况下容易损坏
服务器突然断电导致数据文件损坏。强制关机,没有先关闭 MySQL 服务等。 表损坏的原因分析 以下原因是导致 mysql 表毁坏的常见原因: 1、 服务器突然断电导致数据文件损坏。 2、 强制关机,没有先关闭 mysql 服务。 3、 mysqld 进程在写表时…...
【设计模式——学习笔记】23种设计模式——访问者模式Visitor(原理讲解+应用场景介绍+案例介绍+Java代码实现)
文章目录 案例引入要求传统方案 介绍基本介绍应用场景登场角色尚硅谷版本《图解设计模式》版本 案例实现案例一实现拓展 案例二(个人感觉这个案例较好)实现分析拓展一拓展二拓展三 总结额外知识双重分发 文章说明 案例引入 要求 测评系统需求:将观众分为男人和女人…...
Ubuntu安装MySQL 8.0与Navicat
目录 Ubuntu安装MySQL 8.0 1、更新软件包列表 2、安装 MySQL 8.0 3、启动 MySQL 服务 5、确保MySQL服务器正在运行 5、root 用户的密码 6、登录MySQL,输入mysql密码 7、MySQL默认位置 Ubuntu安装Navicat 1、下载 Navicat 2、额外的软件包 3、执行命令 U…...
GB28181智慧可视化指挥控制系统之执法记录仪设计探讨
什么是智慧可视化指挥控制系统? 智慧可视化指挥控制平台通过4G/5G网络、WIFI实时传输视音频数据至指挥中心,特别是在有突发情况时,可以指定一台执法仪为现场视频监控器,实时传输当前画面到指挥中心,指挥中心工作人员可…...
【SpringBoot】自动配置自动加载controller的原理
SpringBoot自动配置&&自动加载controller的原理.md 好久没有更新自己的博客了,自己最近的正好有点空闲的时间进行,自己在写着写着,突然想起来, 为什么我们点击application就能自动加载Controller呢?(好家伙,我顿时鱼鳃,哈哈) 1.首先我们来到启动现场>启动类 Sprin…...
Docker Enable live
ubuntu - Enabling live restore on docker isnt keeping the containers alive - Stack Overflow容器安全之启用实时恢复 - 简书 (jianshu.com)...
9.物联网操作系统之软件定时器
一。软件定时器概念及应用 1.软件定时器定义 就是软件实现定时器。 2.FreeRTOS软件定时器介绍 如上图所示,Times的左边为设置定时器时间,设置方式可以为任务设置或者中断设置;Times的右边为定时器的定时相应,使用CalBack相应。 …...
Windows Server 2012 R2 安装 Oracle RAC 11g R2
Windows Server 2012 R2 安装 Oracle RAC 11g R2 环境准备安装系统设置虚拟网络配置虚拟机网卡开机进行系统配置关闭防火墙设置网络系统高级设置修改注册表修改计算机名称设置账户控制RAC1 和 RAC2 的磁盘共享修改 hosts同步时间在 RAC1 RAC2 DATA 中安装 .net3.5在 DATA 中搭建…...
本地shell无法连接ubuntu,解决办法?
1.启动ssh服务; sudo /etc/init.d/ssh start若重启ssh服务后,还是连接不上,继续第2步; 2.修改SSH配置文件 /etc/ssh/sshd_config 默认是不允许root远程登录的,可以再配置文件开启。 sudo vi /etc/ssh/sshd_config找…...
关于openwrt的802.11w 管理帧保护使用
目录 关于openwrt的802.11w 管理帧保护使用先来看看界面上的提示 实际遇到的问题总结 关于openwrt的802.11w 管理帧保护使用 先来看看界面上的提示 注意:有些无线驱动程序不完全支持 802.11w。例如:mwlwifi 可能会有一些问题 实际遇到的问题 802.11w 管…...
centos手动离线安装php,nginx
1、CentOS 7上安装并配置Nginx https://www.cnblogs.com/xujiecnblogs/p/16843984.html /usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -s stop #关闭 /usr/local/nginx/sbin/nginx -s reload #重启 增加h…...
Java基础六 - Collection集合List、Set、Queue,Map
1. List - ArrayList、LinkedList、Vector ArrayList 1. 可以有重复元素 2. 超出后自动增加大小,增加一半。会自动重新分配更大的数组,并将元素复制到新数组中 3. 通过索引保存值,访问可以通过索引访问,更加高效。但是添加/删除…...
k8s nginx+ingress 配置
1 nginx> ingress 配置: 2 nginx >service 配置 3 nginx pod配置: 4 nginx.conf 配置文件: # web端v1server{listen 30006;add_header Strict-Transport-Security "max-age31536000; includeSubDomains";#add_header Content…...
FSearch:让Linux文件搜索快到极致的GTK3神器,告别find命令的漫长等待
FSearch:让Linux文件搜索快到极致的GTK3神器,告别find命令的漫长等待 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统中查找文…...
Vibe Coding 工具实战案例全解:Cursor、Claude Code、Codex 真实项目 30 分钟到 4 小时快速构建指南(2026 年最新)
Vibe Coding 工具实战案例(2026 年最新)以下是 3 个真实可复现的 Vibe Coding 实战案例,覆盖主流工具(Cursor、Claude Code、OpenAI Codex),从简单入门到中大型项目。每个案例都包含: 项目场景 核心 Prompt 示例 完整操作流程 实际效果 + 耗时 关键技巧(避坑) 这些案例…...
SecGPT-14B知识库增强:让OpenClaw安全决策更精准
SecGPT-14B知识库增强:让OpenClaw安全决策更精准 1. 为什么需要知识库增强的OpenClaw 去年我在尝试用OpenClaw自动化处理安全日志时,发现一个尴尬的问题:当模型遇到CVE漏洞编号时,经常给出模棱两可的判断。比如看到"CVE-20…...
[具身智能-235]:OpenCV - 图像是RGB三通道,Mask是单通道
在 OpenCV 和计算机视觉中,图像(Image)通常是三维的(高 H 宽 W 通道 C,例如 RGB 三通道),而 掩膜(Mask)通常是二维的(高 H 宽 W,单通道黑白&am…...
9篇8章2节:MIMIC 数据库的 CITI 注册与课程选择(2026年版)
作为包含敏感患者信息的公共数据库,MIMIC 对使用权限的申请设置了严格的伦理与合规门槛,其核心目的在于保障患者隐私、维护学术诚信。其中,通过 CITI Program 的人体研究伦理认证是不可或缺的前置条件,也是衡量研究人员是否具备合规研究素养的关键标准。本文将详细拆解 202…...
提升51%系统响应:开源工具Win11Debloat让老旧电脑焕发新生
提升51%系统响应:开源工具Win11Debloat让老旧电脑焕发新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...
别再只做静态分析了!用DPABI解锁小鼠脑功能动态连接(Temporal Dynamic Analysis详解)
从静态到动态:DPABI在小鼠脑功能时间动态分析中的进阶实践 在神经影像研究领域,静息态功能磁共振成像(rs-fMRI)已成为探索大脑功能组织的强大工具。传统分析方法多聚焦于静态功能连接,将整个扫描时段视为一个整体计算相关性。然而࿰…...
ARM Cortex-M开发避坑指南:DMB、DSB、ISB这三个内存屏障指令到底该怎么用?
ARM Cortex-M内存屏障实战手册:DMB/DSB/ISB的精准选择与避坑策略 当你在调试一个间歇性出现的DMA传输错误时,是否曾怀疑过是内存访问顺序的问题?在RTOS任务切换后寄存器值莫名其妙改变的场景中,是否考虑过指令流水线的影响&#x…...
electron+ruoyi-vue深度整合指南:从web到桌面的完整改造方案
ElectronRuoYi-Vue企业级桌面应用深度整合实战 企业级应用从Web向桌面端迁移已成为提升用户体验的重要路径。作为国内广泛使用的开源后台管理系统,RuoYi-Vue与Electron的结合能够快速构建跨平台桌面应用。但真正实现企业级稳定运行,需要解决主进程通信、…...
别再用临时邮箱了!用Python+Selenium自动化管理你的Augment AI多账户(附完整脚本)
构建可持续的Augment AI自动化账户管理系统 在AI辅助编程工具日益普及的今天,开发者们对高效工具的依赖程度越来越高。Augment AI作为一款强大的代码助手,其免费版本300次的使用限制常常成为开发者工作流中的瓶颈。传统解决方案如手动重置或使用临时邮箱…...
