小白到运维工程师自学之路 第六十六集 (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…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
