一文了解Docker之网络模型

news2024/12/23 6:36:28

目录

1.Docker网络

1.1 Docker网络模型概述

1.2 Docker网络驱动程序

1.2.1 host模式

1.2.2 bridge模式

1.2.3 container模式

1.2.4 none模式

1.3 Docker网络命令示例

1.3.1 创建一个自定义网络

1.3.2 列出所有网络

1.3.3 连接容器到网络

1.3.4 断开容器与网络的连接

1.3.5 查看容器的网络信息


1.Docker网络

1.1 Docker网络模型概述

Docker是一种容器化平台,它提供了一种轻量级的虚拟化解决方案,使得应用程序能够以容器的形式运行。在Docker中,每个容器都有自己的网络栈,可以与其他容器或主机进行通信。Docker网络模型为容器提供了灵活的网络配置和连接选项。

Docker网络模型基于Linux内核的网络命名空间和虚拟以太网桥技术。每个Docker容器都有自己的网络命名空间,这意味着每个容器都有自己的网络接口、IP地址和路由表。Docker还提供了一些网络驱动程序,用于实现容器之间的通信和与外部网络的连接。

Docker网络模型是一个三层的网络模型,它允许容器之间的通信,并提供了多种网络驱动程序供用户选择。Docker网络模型的核心组件包括:

  1. Docker网络:Docker网络是一组容器的虚拟网络,它允许容器之间进行通信。每个Docker网络都有自己的IP地址范围和子网掩码。

  2. Docker网桥:Docker网桥是一个虚拟交换机,它连接了Docker网络和物理网络,并负责容器之间的通信。

  3. 容器网络接口(CNI):CNI是一个插件接口,用于配置容器的网络。它定义了一组标准接口和一套配置规范,使得不同的网络驱动程序可以无缝切换。

1.2 Docker网络驱动程序

Docker提供了多种网络驱动程序,用于实现不同的网络连接方式。以下是一些常用的网络驱动程序:

1.2.1 host模式

host驱动程序将容器与主机网络共享,容器将直接使用主机的网络栈和IP地址。这意味着容器可以通过主机的IP地址与外部网络进行通信,但容器之间无法直接通信。使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

使用host驱动程序创建一个容器网络,只需运行以下命令:

$ docker run --name mycontainer --network host nginx

1.2.2 bridge模式

bridge驱动程序是Docker默认的网络驱动程序。它基于Linux内核的bridge技术,创建一个虚拟的以太网桥,用于连接容器和主机网络。每个容器都会分配一个独立的IP地址,并通过桥接方式与其他容器通信。bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。

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

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

 从上图中我们可以看到,可以看到容器内部和Linux主机都会创建一个新的网卡,而这两个网卡都是成对的。使用的技术就是evth-pair。evth-pair 就是一对的虚拟设备接口,他们是成对出现的,一段连着协议,一段彼此相连。evth-pair充当一个桥梁,连接各种虚拟网络设备。

Docker容器完成bridge网络配置的过程如下:
 1. 在主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备。
 2. Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0。另一端放在主机中,以veth这样类似的名字命名,并将这个网络设备加入到docker0网桥中。
 3. 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。一般在docker中docker0的IP地址就相当于localhost。

使用bridge驱动程序创建一个容器网络非常简单,只需运行以下命令:

$ docker run --name mycontainer --network bridge nginx

1.2.3 container模式

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

1.2.4 none模式

 使用none模式,Docker 容器拥有自己的Network Namespace ,但是,并不为Docker 容器进行任何网络配置。也就是说,这个Docker 容器没有网卡、IP、路由等信息。这种网络模式下容器只有lo回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

1.3 Docker网络命令示例

1.3.1 创建一个自定义网络

$ docker network create mynetwork

1.3.2 列出所有网络

$ docker network ls

1.3.3 连接容器到网络

$ docker network connect mynetwork mycontainer

1.3.4 断开容器与网络的连接

$ docker network disconnect mynetwork mycontainer

1.3.5 查看容器的网络信息

$ docker network inspect mynetwork

 至此本篇文章结束。

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

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

相关文章

ASO优化之海外应用的评分评论

应用评分评论是所有用户生成的反馈汇总,用1-5星等级来表示。这是用户在搜索应用程序是最先想到的事情,所以这对于应用商店优化很重要。 应用商店里有数以万计的应用程序可供使用,并且每天都会发布新的应用,所以为了在竞争激烈的应…

如何让小家电带电池设备快速充满电

如今随着这几年的USB-C PD适配器的普及,消费者手上的PD协议适配器越来越普遍,如何让微软surface 充电器线支持使用PD适配器快充呢?不妨加入一颗受电端PD协议取电芯片——LDR6015 就可以打造一根 PD电源线适配pro7/6/5/4/laptop/book/go Type…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册8

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

HarmonyOS极客松“上分秘籍”! 高手们顶峰相见!

HarmonyOS 极客马拉松2023 火热进行中,我们期待与各位开发者相聚一起,践行极客精神,创造无限可能! 我们鼓励各位极客们自由组队,挥洒创意,用HarmonyOS 探索移动应用和服务的更多可能性! 优秀的参…

ABB机器人中变量的3种存储类型使用时的区别

ABB机器人中变量的3种存储类型使用时的区别 ABB机器人中变量的存储类型有3种:变量VAR、可变量PERS、常量CONST,如下图所示, 如下图所示,声明一个VAR类型的变量,具体语法格式: 3种存储类型的具体区别如下…

vue3+ts 绘制流程图 vueflow 附代码及效果图

已完成渲染流程图,自定义模板内容(上下分级),自定义样式,新增节点addRandomNode,点击修改节点nodeClickHandler(从父组件传值) 官网:https://vueflow.dev/guide/node.html#node-template 文档比较复杂,很多想找的方法…

nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题

问题描述: 在centos7上部署多个springcloud项目。出现了服务莫名其妙会挂掉一两个的问题,重新启动挂掉的服务之后又会出现其他服务挂掉的情况,查看启动日志也并没有发现有异常抛出。令人费解的是所有的服务都是通过nohup java -jar xxx.jar …

2020年国赛高教杯数学建模C题中小微企业的信贷决策解题全过程文档及程序

2020年国赛高教杯数学建模 C题 中小微企业的信贷决策 原题再现 在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷…

MAYA过山车动画

创建骨骼 把小车模型放入到控制器里 有点问题,先建立一个组在试,没问题了

docker框架02docker的安装

01.这次的docker是在centos版本下的Linux系统中安装的。 02.输入命令 01.先去卸载就得版本 02.安装工具包,和设置镜像仓库 03.由于网络的问题,访问国内的阿里云镜像 修改: 04.更新索引和安装社区版的docker 05.启动docker 06.用命令d…

nginx开启http2导致的服务验证码不可用问题

问题描述: 新搭建了一套开源的系统。通过nginx做了https反向代理后无法显示验证码。 具体报错: Uncaught TypeError: Cannot read properties of null (reading ‘property’) 点击报错后跳转到方法: xhr.getAllResponseHeaders() 问题就出在这个方法&…

leetcode 206.反转链表

⭐️ 往期相关文章 ✨链接:数据结构-手撕单链表代码详解。 ⭐️ 题目描述 🌟 leetcode链接:反转链表 1️⃣ 代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…

html中input属性设置(合集)

html中input标签是常见的一个标签&#xff0c;下面由学习啦小编为大家整理了html中的input属性设置的相关知识&#xff0c;希望对大家有帮助! html中input属性设置总结 1、value 属性 value 属性规定输入字段的初始值&#xff1a; 实例 <form action""> F…

Day9操作系统基础——linux

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 linuxSSH黑客常用命令重难点 linux SSH 黑客常用命令 重难点 linux的相关操作指令

即时抽奖,即时开奖,技术上如何实现?(原来抽奖类的运营活动背后都是这么搞的)...

回答知识星球水友“self”提问。 需求抽象一下&#xff1a; &#xff08;1&#xff09;前100个人有资格&#xff0c;假设抽出N5个奖品&#xff1b; &#xff08;2&#xff09;报名就出奖&#xff0c;不用等100人到齐&#xff1b; &#xff08;3&#xff09;每个人概率一样&…

window debug ios webview

业务需求 在window上想要debug在ios的应用中的webview页面&#xff0c;毕竟页面是在安卓端和ios端都有webview的。安卓的页面使用edge的edge://inspect/#devices&#xff0c;手机开启调试模式就可以了。对于ios就没有办法&#xff0c;页面中已经使用了vconsole可以看到部分的信…

融云观察:社交大佬发家史,模仿才是终极成功学密码?

上周&#xff0c;多所高校因微信支付将收取手续费宣布暂停使用&#xff0c;微信致歉并称在校园非盈利场景将持续保持零费率。关注【融云全球互联网通信云】了解更多 微信的回应非常迅速&#xff0c;但还是多次冲上了热搜榜&#xff0c;可见对一个用户量超过 12 亿的社交巨头来…

fiddler弱网测试 和 Chrome浏览器弱网设置

文章目录 前言 一、fiddler弱网测试 二、Chrome浏览器弱网测试 步骤1&#xff1a;在Fiddler中启动弱网 步骤2&#xff1a;设置网络参数 步骤3&#xff1a;设置完成后&#xff0c;保存 三、弱网测试关注点 总结 前言 测试APP、web经常需要用到弱网测试&#xff0c;也就是…

2023年5月PETS5(WSK)考试经验分享

由于本人明年打算出国联培的缘故&#xff0c;CSC国家留学基金委需要申请人的语言成绩达到一定的要求 英语&#xff08;PETS5&#xff09;&#xff1a;笔试总分55分&#xff08;含&#xff09;以上&#xff0c;其中听力部分18分&#xff08;含&#xff09;以上&#xff0c;口试…

PyQt中资源文件的使用(详细步骤介绍)

新建文件&#xff1a; 在 Qt Creator&#xff0c;选中菜单 File->New File...&#xff0c;选择新建 Qt Resource File。 命名为res.qrc 在项目文件目录树中&#xff0c;会自动出现 Resources 文件组和 res.qrc 文件 添加资源记录&#xff1a; 在文件 res.qrc 上点击右键&a…