当前位置: 首页 > news >正文

Docker:基础概念、架构与网络模式详解

1.Docker的基本概念

1.1.什么是docker

        Docker是一个用于开发,交付和运行应用程序的开放平台.docker使您能够将应用程序域基础框架分开,以便你可以快速开发交付软件.使用docker,你可以管理你的基础架构以管理应用程序相同的方式.通过利用docker用于交付,测试和部署代码的方法,你可以显著减少编写代码和生产环境中运行代码之间的延迟.

1.2.docker和虚拟机的区别

1.2.1.框架

        每个虚拟机运行一个完整的操作系统,并在其上运行应用程序。虚拟机赖于一个虚拟化管理程序(如 VMware、Hyper-V、KVM),该程序在物理硬件和虚拟机操作系统之间充当中介。每个虚拟机需要分配单独的系统资源(CPU、内存、存储),并运行自己的内核和操作系统实例。

        Docker 容器共享宿主机操作系统的内核,但独立运行应用程序及其所有依赖项。使用操作系统级虚拟化技术(如 cgroups 和 namespaces)来隔离和管理容器。容器之间共享操作系统内核,启动时间快,占用资源少。

1.2.2.性能

        虚拟机由于需要运行一个完整的操作系统实例,虚拟机通常启动较慢,且占用更多系统资源。性能开销主要来自于操作系统的管理和Hypervisor的开销。

        而docker的容器化应用程序几乎可以立即启动,因为它们不需要启动一个完整的操作系统。资源开销低,性能更接近于裸机。

1.2.3.资源分配

        虚拟机的资源分配是静态的,即在启动时分配特定的CPU、内存等资源,即使这些资源在某些时候未被完全利用,也不会被其他虚拟机使用。而docker的资源利用是动态和弹性的,多个容器可以高效地共享和利用系统资源。资源分配可以根据需求进行调整。

2.Docker架构

       Docker 架构通过客户端、守护进程、镜像、容器、仓库等多个组件的协同工作,提供了一个高效、灵活的容器化平台。

2.1.Docker Client(客户端)

        Docker客户端是用户与 Docker 交互的接口。用户通过命令行或其他工具向 Docker 客户端发送命令,客户端再将命令传递给 Docker 守护进程(Docker Daemon)进行处理。常用的 Docker 命令如 docker rundocker pulldocker build 等,都是通过客户端发起的。

2.2.Docker Daemon(守护进程)

        Docker Daemon 是 Docker 的核心组件,它运行在主机上,负责处理来自 Docker 客户端的请求,并管理容器、镜像、网络和存储等资源。Docker Daemon 通常作为后台进程运行,可以在本地主机上,也可以通过远程 API 接受来自其他主机的请求。

2.3.Docker 的核心组件:image镜像、Container容器、Registry仓库

2.3.1.镜像

        Docker 镜像是一个只读的模板,它包含了运行应用程序所需的所有内容,包括代码、库、环境变量、配置文件等。镜像是不可变的,每次创建新的镜像时,都会生成一个新的快照。其中镜像遵循2个重要的原则:

  1. image是不可变的。创建image后,无法修改。您只能创建新图像或在其上添加更改。

  2. 容器image由层组成。每个层表示一组文件系统更改,用于添加、删除或修改文件。

这两个原则允许您扩展或添加到现有映像。例如,如果要构建 Python 应用,则可以从Python 图像并添加其他层以安装应用的依赖项并添加代码。这样一来,你就可以专注于你的应用,而不是 Python 本身。

2.3.2.容器?

        Docker 容器是镜像的运行实例。它可以被启动、停止、移动和删除。每个容器都是一个独立的、隔离的环境,包含了运行应用程序所需的一切。

2.3.3.仓库?

        Docker 仓库是存储和分发镜像的地方。它们可以是公共的,也可以是私有的。最常用的公共仓库是 Docker Hub,此外还有许多其他的第三方仓库和企业内部的私有仓库。

2.4.Docker Compose

        容器的最佳实践之一是每个容器应该只做一件事,并且做好这件事。尽管有些例外,但应尽量避免让一个容器做多件事。你可以使用多个命令启动多个容器,但你会很快发现需要管理网络、连接容器到这些网络的所有标志等等。而且,当你完成后,清理变得有点复杂。

        此时通过Docker Compose,你可以在一个 YAML 文件中定义所有容器及其配置。如果你把这个文件包含在代码库中,任何克隆你代码库的人都可以通过一个命令启动所有容器。

2.5.Docker Swarm

        Docker Swarm 是 Docker 的原生集群管理工具,允许用户将多个 Docker 主机组合成一个虚拟的 Docker 主机。通过 Docker Swarm,用户可以在集群中调度和管理容器,提供高可用性和负载均衡。

2.6.Docker Networking(网络)

        Docker 网络用于容器之间以及容器与外部世界之间的通信。Docker 提供了多种网络驱动,如桥接网络、主机网络、覆盖网络等,用户可以根据需求选择合适的网络模式。下面会详细说明.

2.7.Docker Storage(存储)

        Docker 存储解决方案用于持久化容器数据。Docker 提供了多种存储驱动,如数据卷(Volumes)、绑定挂载(Bind Mounts)和 tmpfs 挂载,用户可以根据应用需求选择合适的存储方式。

3.Docker容器的网络模式

        Docker 提供了多种网络模式来连接容器。每种模式都有其特定的用途和配置方式,了解这些模式有助于在不同场景下选择合适的网络解决方案。

3.1. Bridge(桥接)网络模式

        Bridge网络模式是Docker 默认的网络模式。当你启动一个新的容器时,Docker 会自动将其连接到一个默认的桥接网络。这种模式适用于在同一主机上运行的多个容器之间的通信。每个容器都会获得一个独一无二的 IP 地址。通过与主机的桥接连接,这些容器还可以相互交互,与本地网络(LAN)和 Internet 互联。然而,它们不会以物理设备的形式出现在 LAN 上。特点是:每个容器都有一个独立的IP地址;容器之间通过桥接网络相互通信;适合单机上的容器通信。

3.2.Host(主机)网络模式

        允许容器共享宿主机的网络栈。在这种模式下,容器不会获得独立的 IP 地址,而是使用宿主机的 IP 地址。这种模式适用于需要高性能网络通信的场景。特点是:容器共享宿主机的网络栈;提高网络性能;容器和宿主机上的服务共享同一个端口空间。

3.3.None网络模式

        None网络模式为容器提供完全隔离的网络环境。容器不会连接到任何网络,只有一个回环接口。这种模式适用于需要完全隔离网络的容器。特点是:容器没有网络连接;适合需要完全隔离的环境。

3.4. Container网络模式

        Container网络模式允许多个容器共享同一个网络栈。在这种模式下,一个容器可以与另一个容器共享网络接口。适用于需要紧密耦合的容器之间的通信。特点是:多个容器共享同一网络栈;容器之间通信效率高.

3.5.Overlay网络模式

Overlay网络模式用于跨多个 Docker 主机的容器通信,常用于 Docker Swarm 或 Kubernetes 环境。通过覆盖网络,可以实现分布式集群中容器之间的通信。特点是:支持跨多个主机的容器通信;适用于分布式集群环境.

3.6.Macvlan 网络模式

        是一种高级网络配置,允许你将容器直接连接到宿主机的网络,并为每个容器分配一个独立的 MAC 地址。这种模式使得容器在网络中看起来像是独立的物理设备。它非常适合需要与物理网络设备进行高度集成的场景。特点是:每个容器都有自己的 MAC 地址和 IP 地址,类似于物理设备;容器可以直接与宿主机的物理网络通信,减少了网络开销;由于容器直接连接到物理网络,网络性能较好;需要手动配置物理网络接口和子网。

相关文章:

Docker:基础概念、架构与网络模式详解

1.Docker的基本概念 1.1.什么是docker Docker是一个用于开发,交付和运行应用程序的开放平台.docker使您能够将应用程序域基础框架分开,以便你可以快速开发交付软件.使用docker,你可以管理你的基础架构以管理应用程序相同的方式.通过利用docker用于交付,测试和部署代码的方法,你…...

全国大学生数据建模比赛c题——基于蔬菜类商品的自动定价与补货决策的研究分析

基于蔬菜类商品的自动定价与补货决策的研究分析 摘要 商超蔬菜不易保存,其质量会随着销售时间的增加而变差,影响商超收益,因此,基于各蔬菜品类的历史销售数据,制定合理的销售策略和补货决策对商超的营收十分关键。本文…...

【漏洞复现】飞企互联-FE企业运营管理平台 uploadAttachmentServlet—文件上传漏洞

声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。 一、漏洞描述 企互联-FE企业运营管理平台是一个利用云计算、人工智能、大数据、物联网和移动互联网等现代技术构建的云…...

基于深度学习的语言生成

基于深度学习的语言生成(NLG, Natural Language Generation)是一种利用深度学习模型生成自然语言文本的技术。它在智能写作、自动摘要、对话系统、机器翻译等领域有广泛应用。以下是对这一领域的系统介绍: 1. 任务和目标 语言生成的主要任务…...

Kafka Rebalance详解

作者:耀灵 1.rebalance概览 rebalance中文含义为再平衡。它本质上是一组协议,规定了一个 consumer group 是如何达成一致来分配订阅 topic 的所有分区的。比方说Consumer Group A 有3个consumer 实例,它要消费一个拥有6个分区的topic&#…...

在 Markdown 编辑器中插入 空格 Space 和 空行 Enter

1. 空格 Space &#xA0;2.空行 Enter <br/>...

js逆向-webpack-python

网站&#xff08;base64&#xff09;&#xff1a;aHR0cHM6Ly93d3cuY29pbmdsYXNzLmNvbS96aA 案例响应解密爬取&#xff08;webpack&#xff09; 1、找到目标url 2、进行入口定位&#xff08;此案例使用 ‘decrypt(’ 关键字搜索 &#xff09; 3、找到位置进行分析 --t 为 dat…...

Python精神病算法和自我认知异类数学模型

&#x1f3af;要点 &#x1f3af;空间不确定性和动态相互作用自我认知异类模型 | &#x1f3af;精神病神经元算法推理 | &#x1f3af;集体信念催化个人行动力数学模型 | &#x1f3af;物种基因进化关系网络算法 | &#x1f3af;电路噪声低功耗容错解码算法 &#x1f4dc;和-…...

npm install 报错:PhantomJS not found on PATH

npm install 报错&#xff1a;PhantomJS not found on PATH 整体报错内容 npm ERR! code 1 npm ERR! path G:\work-learn\open-coding\bruno\node_modules\phantomjs-prebuilt npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.…...

【C++进阶学习】第六弹——set和map——体会用C++来构建二叉搜索树

set和map基础&#xff1a;【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 前言&#xff1a; 在上篇的学习中&#xff0c;我们已经学习了如何使用C语言来实现二叉搜索树&#xff0c;在C中&#xff0c;我们是有现成的封装好的类模板来实现二叉搜索树…...

sqlmap确定目标/实操

安装kali&#xff0c;kali自带sqlmap&#xff0c;在window系统中跟linux系统操作有区别 sqlmap是一款自动化SQL工具&#xff0c;打开kali终端&#xff0c;输入sqlmap&#xff0c;出现以下界面&#xff0c;就说明sqlmap可用。 sqlmap确定目标 一、sqlmap直连数据库 1、直连数据库…...

Java笔试|面试 —— 对多态性的理解

谈谈对多态性的理解&#xff1a; 一个事物的多种形态&#xff08;编译和运行时状态不一致性&#xff09; 实现机制&#xff1a;通过继承、重写和向上转型&#xff08;Object obj new 子类()&#xff09;来实现。 1.广义上的理解 子类对象的多态性&#xff0c;方法的重写&am…...

从RL的专业角度解惑 instruct GPT的目标函数

作为早期chatGPT背后的核心技术&#xff0c;instruct GPT一直被业界奉为里程碑式的著作。但是这篇论文关于RL的部分确写的非常模糊&#xff0c;几乎一笔带过。当我们去仔细审查它的目标函数的时候&#xff0c;心中不免有诸多困惑。特别是作者提到用PPO来做强化学习&#xff0c;…...

location匹配的优先级和重定向

nginx的重定向&#xff08;rewrite&#xff09; location 匹配 location匹配的就是后面的uri /wordpress 192.168.233.10/wordpress location匹配的分类和优先级 1.精确匹配 location / 对字符串进行完全匹配&#xff0c;必须完全符合 2.正则匹配 ^-前缀级别&#xff…...

观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系

V表示摄像机的观察矩阵&#xff08;View Matrix&#xff09;&#xff0c;它的作用是把对象从世界坐标系变换到摄像机坐标系。因此&#xff0c;对于世界坐标系下的坐标值worldCoord(x0, y0, z0)&#xff0c;如果希望使用观察矩阵VM将其变换为摄像机坐标系下的坐标值localCoord(x…...

谷粒商城学习笔记-19-快速开发-逆向生成所有微服务基本CRUD代码

文章目录 一&#xff0c;使用逆向工程步骤梳理1&#xff0c;修改逆向工程的application.yml配置2&#xff0c;修改逆向工程的generator.properties配置3&#xff0c;以Debug模式启动逆向工程4&#xff0c;使用逆向工程生成代码5&#xff0c;整合生成的代码到对应的模块中 二&am…...

时序预测 | Matlab实现TCN-Transformer的时间序列预测

时序预测 | Matlab实现TCN-Transformer的时间序列预测 目录 时序预测 | Matlab实现TCN-Transformer的时间序列预测效果一览基本介绍程序设计 效果一览 基本介绍 基于TCN-Transformer模型的时间序列预测&#xff0c;可以用于做光伏发电功率预测&#xff0c;风速预测&#xff0c;…...

没想到MySQL 9.0这么拉胯

MySQL 7月1号发布了9.0版本&#xff0c;然而没想到并没有引起大家的狂欢&#xff0c;反而是来自DBA圈子的一篇吐槽&#xff0c;尤其是PG界吐槽更厉害。 难道MySQL现在真的这么拉胯了&#xff1f;本着好奇的态度&#xff0c;我也去下载了MySQL9.0的手册看了一下。确实有点让我大…...

开源 Wiki 系统 InfoSphere 2024.01.1 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台&#xff0c;建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件&#xff1a;https://github.com/devlive-commun…...

1.Introduction to Spring Web MVC framework

Web MVC framework 文档&#xff1a;22. Web MVC framework (spring.io) 概述 Web MVC框架&#xff08;Web Model-View-Controller Framework&#xff09;是一种用于构建Web应用程序的软件架构模式。MVC模式将应用程序分为三个主要组件&#xff1a;模型&#xff08;Model&am…...

Onnx 1-深度学习-概述1

Onnx 1-深度学习-概述1 一: Onnx 概念1> Onnx 介绍2> Onnx 的作用3> Onnx 应用场景4> Onnx 文件格式1. Protobuf 特点2. onnx.proto3协议3> Onnx 模型基本操作二:Onnx API1> 算子详解2> Onnx 算子介绍三: Onnx 模型1> Onnx 函数功能1. np.random.rand…...

网络基础——udp协议

UDP协议&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是OSI&#xff08;Open System Interconnection&#xff0c;开放式系统互联&#xff09;参考模型中一种无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。以下是关于…...

分布式锁理解

介绍分布式锁&#xff0c;我觉得从项目的背景入手把 在伙伴匹配系统中&#xff0c;我创建了一个定时任务&#xff0c;做为缓存预热的手段 这个具体原因在Redis-CSDN博客 接下来切入正题&#xff1a; 想象每个服务器都有一个定时任务&#xff0c;都要对数据库或者缓存进行操…...

Android Gradle 开发与应用 (十): Gradle 脚本最佳实践

目录 1. 使用Gradle Kotlin DSL 1.1 什么是Gradle Kotlin DSL 1.2 迁移到Kotlin DSL 1.3 优势分析 2. 优化依赖管理 2.1 使用依赖版本管理文件 2.2 使用依赖分组 3. 合理使用Gradle插件 3.1 官方插件和自定义插件 3.2 插件管理的最佳实践 4. 任务配置优化 4.1 使用…...

c#获取本机的MAC地址(附源码)

在前一次的项目中&#xff0c;突然用到了这个获取本机的MAC地址&#xff0c;然后就研究了一下&#xff0c;记录下来&#xff0c;防止以后再用到&#xff0c; 使用winfrom做的&#xff0c;界面一个button&#xff0c;一个textBox,点了button以后给textBox赋值显示mac地址 附上源…...

sqlmap使用之-post注入、head注入(ua、cookie、referer)

1、post注入 1.1、方法一&#xff0c;通过保存数据包文件进行注入 bp抓包获取post数据 将数据保存到post.txt文件 加上-r指定数据文件 1.2、方法二、通过URL注入 D:\Python3.8.6\SQLmap>python sqlmap.py -u "http://localhost/login.php" --data "userna…...

XSS: 原理 反射型实例[入门]

原理 服务器未对用户输入进行严格校验&#xff0c;使攻击者将恶意的js代码&#xff0c;拼接到前端代码中&#xff0c;从而实现恶意利用 XSS攻击危害 窃取用户Cookie和其他敏感信息&#xff0c;进行会话劫持或身份冒充后台增删改文章进行XSS钓鱼攻击利用XSS漏洞进行网页代码的…...

Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable

文章目录 一&#xff0c;创建Module报错二&#xff0c;原因分析三&#xff0c;解决方案1&#xff0c;点击上图的加号&#xff0c;把JDK8添加进来即可2&#xff0c;点击左侧[Project]&#xff0c;直接设置SDK为JDK8 四&#xff0c;配置检查与验证 一&#xff0c;创建Module报错 …...

基于RHCE基础搭建简单服务

目录 项目标题与需求一 配置IP地址server机node02机 二 配置web服务三 搭建dns服务器四 开启防火墙server firewalld 五 配置nfs服务器node02 nfsserver autofs 六 开启SELinux七 验证是否能访问www.rhce.com 项目标题与需求 项目标题&#xff1a; 项目需求&#xff1a; 现有…...

威纶通触摸屏软件离线仿真时出现报错8000端口占用或服务器断线

现象 威纶通触摸屏软件离线仿真时出现报错 显示8000端口被占用 或者是设备服务器断线的状态 处理方法 系统参数——HMI属性 端口号更改一下即可 或者关闭占用8000端口的应用 分享创作不易&#xff0c;请多多支持&#xff0c;点赞、收藏、关注&#xff01; Ending~...

无锡网站建设价格费用/win7优化软件

概述一般我们讲的虚拟化有两种类型&#xff1a;Hypervisor直接在安装在宿主机的逻辑上&#xff1a;Hypervisor 直接安装在物理机上&#xff0c;多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。K…...

网络服务器配置设计/seo优化在线诊断

一、LVS-NAT模式的组成LVS-NAT模式的实现&#xff0c;其主要依赖于 LVS调度器&#xff0c;即 Director Server&#xff0c;由上图可以看出&#xff0c;整个调度器&#xff0c;则由两部分构成&#xff1a;用户空间和内核空间。1、内核空间&#xff0c;指的是&#xff0c;在负载均…...

公司官网用wordpress/站长工具seo综合查询怎么用

问题&#xff1a; 用reactive对象抽取出的所有属性值的都是非响应式的 解决&#xff1a; 用toRefs可以将一个响应式reactive对象的所有属性值转换为响应式的ref属性。 <template><div id"nav"><h3>{{id}}</h3><h3>{{name}}</h3>…...

网站只做优化/合肥网站制作推广

第1章 課程介紹課程的總體介紹&#xff0c;定時任務的應用場景和發展趨勢&#xff0c;以及分布式定時任務的介紹.第2章 前期准備課程學習所必須的組件&#xff0c;包括JDK、MySQL、Zookeeper、Maven等.第3章 極速入門-分布式定時任務框架-Elastic-Job快速入門Elastic-Job定時任…...

本地网站建设官网/常州百度推广公司

一、前提 1、项目已经部署好 2、docker已经安装好 二、docker安装influxdb 1、下载influxdb镜像&#xff1a;docker pull tutum/influxdb 1&#xff09;超时报错&#xff1a; 2&#xff09;解决办法&#xff1a;vim /etc/docker/daemon.json&#xff08;应该只有一个key.…...

哪些网站是用h5做的/成人教育培训机构排名

一、分布式系统 数据密集型应用——分布式数据复制 Paxos协议学习——译《The Part-Time Parliament》 可靠分布式系统-paxos的直观解释 分布式组件 ZooKeeper分布式过程协同技术详解-简介 二、docker Docker系列&#xff1a;Docker子命令分类 Docker Registry 安装和运行…...