Docker--Docker是什么和对Docker的了解

Docker 的本质

Docker的本质是LXC(Linux容器)之类的增强版,它本身不是容器,而是容器的易用工具。

Docker通过虚拟化技术,将代码、依赖项和运行环境打包成一个容器,并利用隔离机制来使得容器之间互相独立、互不影响。

Docker是基于Go语言实现的一个开源项目,其源代码是公开的,社区中的开发者可以共同维护和贡献代码。

Docker的主要组件包括Docker客户端、Docker服务端(也称为Docker daemon或守护进程)、Docker镜像和Docker容器等。

Docker提供了一种轻量级、可移植和自包含的容器化环境,使开发人员能够在不同的计算机上以一致的方式构建、打包和分发应用程序。

Docker和虚拟机的区别

关键Docker虚拟机
资源利用率占用的资源较少,启动时间也更短资源开销较大,启动时间也相对较长
隔离性相对较弱,但它们仍然能够确保应用程序在独立的环境中运行每个虚拟机都有自己独立的操作系统和内核,因此相互之间的影响更小
部署和扩展可移植的,易于部署和扩展拟机的部署和扩展相对复杂
管理和监控可以通过Dockerfile来定义应用程序的构建过程,通过Docker Compose来管理多个容器的部署,以及通过Docker Swarm或Kubernetes等集群管理工具来实现容器集群的管理和监控通过Hypervisor提供的管理工具(如VMware vSphere、Microsoft Hyper-V、KVM等)进行管理;相对于Docker来说,虚拟机的管理和监控更加复杂
应用场景适合用于现代化应用场景,如微服务架构、持续集成和持续部署(CI/CD)流水线以及轻量级应用的部署等合用于传统企业应用、需要高隔离性和多操作系统支持的场景

在这里插入图片描述
docker 有比虚拟机更少的抽象层。
Hypervisor是一种软件或硬件,它能够在物理服务器上创建和管理多个虚拟机(VirtualMachine)。Hypervisor提供了一个抽象层,将物理服务器的资源(如CPU、内存、存储和网络)划分为多个独立的虚拟机。相比之下,docker容器上的程序是直接使用实际物理机的硬件资源,这样就大大加快了容器的启动和运行部署。

Guest OS是指在虚拟机(VM)中运行的操作系统。每个虚拟机都可以独立运行一个Guest OS。
一个操作系统,启动时就必须加载,就跟我们手机开机一样,相比之下,容器像打开一个应用程序一样,能够快速的打开;

Docker 官网

Docker的官方网站提供了丰富的资源和文档,以帮助用户更好地了解和使用Docker技术。
http://www.docker.com

Docker 架构

在这里插入图片描述
Docker架构主要由几个关键组件构成,包括Docker引擎(Docker Engine)、Docker镜像(Docker Image)、Docker容器(Docker Container)、Docker网络(Docker Networking)、Docker存储以及Docker注册表(Docker Registry)。这些组件共同协作,为用户提供了创建、部署和管理容器化应用的能力。

Docker引擎 (Docker Engine)

Docker引擎是Docker架构的核心,它是一个客户端-服务器(C/S)架构的应用程序.
Docker引擎主要由以下三部分组成:

  • Docker守护进程(Docker Daemon):这是Docker引擎的核心部分,负责在后台运行并管理Docker容器的生命周期,包括创建、运行、停止和删除容器。此外,Docker守护进程还负责管理镜像和网络等资源。
  • REST API:Docker通过REST API与外部进行交互。这个API提供了一套标准化的接口,使得其他应用程序能够通过HTTP请求与Docker守护进程进行通信,从而管理容器和相关资源。
  • Docker命令行界面(CLI):这是用户与Docker引擎进行交互的工具。用户可以通过命令行执行各种Docker命令,如docker run、docker build、docker stop等,来控制容器的生命周期。

Docker镜像 (Docker Image)

Docker镜像是用于创建Docker容器的模板,它包含了运行某个应用程序所需的所有依赖项、库和配置文件。镜像采用分层文件系统(UnionFS),这意味着每个镜像都是由多个只读层组成的。这些层代表了镜像在不同时间点的状态,新的改动会被添加到新的层上,而不是修改现有层。

Docker容器 (Docker Container)

Docker容器是基于Docker镜像创建的可运行实例。容器包含了应用程序的代码及其运行时所需的所有依赖项,可以在不同的环境中确保应用的行为一致。与虚拟机相比,Docker容器更加轻量级,占用的资源更少,启动速度更快。此外,Docker容器提供了进程级别的隔离,使得容器内的进程不会直接影响主机系统或其他容器。

Docker网络 (Docker Networking)

Docker网络是容器之间以及容器与外部世界进行通信的基础。Docker支持多种网络模式,包括桥接网络(Bridge)、主机网络(Host)、覆盖网络(Overlay)以及自定义网络等。这些网络模式提供了灵活的通信方式,满足了不同场景下的需求。

Docker存储

Docker容器的数据存储分为两种:容器存储和持久化存储。默认情况下,容器内的数据是临时的,容器删除后数据也随之消失。为了保持数据的持久性,Docker引入了数据卷(Volumes)和绑定挂载(Bind Mounts)两种机制。数据卷是由Docker管理的一种数据存储机制,独立于容器的生命周期;而绑定挂载则允许将主机系统的目录或文件挂载到容器中。

Docker注册表(Docker Registry)

Docker注册表是存储和分发Docker镜像的地方。官方的Docker Hub是最常用的公共注册表,用户可以在上面发布和下载镜像。此外,企业或组织还可以搭建自己的私有Docker注册表,用于存储内部开发的镜像,保障数据的安全性和访问控制。

Docker生态

新时代软件的诉求

软件应能够自动化处理重复性的任务和流程,提高工作效率,减少人为错误。例如,自动化测试、…自动化部署等工具已经成为软件开发和运维的标配。
新时代软件需要具备跨平台运行的能力,能够在不同的操作系统、设备和浏览器上无缝运行,提供一致的用户体验。

  • 业务效率提升:软件应能够帮助企业优化业务流程,提高工作效率,降低运营成本。
  • 数据驱动决策:通过数据分析和挖掘,为企业提供有价值的洞察和决策支持。
  • 客户体验优化:通过软件技术改善客户的互动体验,提供个性化服务,增强客户满意度和忠诚度。

研发模式从瀑布开发演变为敏捷开发,原来 3 个月上一次新功能,现在两周一次,而开发过程中我们也经常遇到需要修改需求,然后变更再发布的情况。

软件上线有问题需要快速回滚,对软件有着极强的版本管理和回滚诉求。

每个项目组使用的语言不一样,需要不同的环境,每个都得搞一套。每次都要从 yum开始一个个完成部署安装,每次都有各种奇怪的问题,运维成本很高。

Docker的解决

通过构建Docker镜像,可以确保开发、测试和生产环境的一致性,从而避免因环境差异导致的问题。
Docker镜像包含了应用程序及其所有依赖项,这些依赖项在镜像构建时就被打包在一起。这样,在部署时就不需要再手动安装和配置依赖项,减少了因依赖问题导致的错误。

Docker镜像是一个独立的可执行单元,包含了运行应用程序所需的所有内容。这使得部署变得非常简单,只需将镜像上传到目标主机,并使用Docker命令启动容器即可。
Docker镜像可以在不同的操作系统和硬件平台上运行,只需确保目标主机上安装了Docker引擎。这使得应用程序的部署更加灵活和广泛。

通过版本控制工具(如Git)管理Dockerfile,可以方便地管理应用程序的不同版本。这样,用户可以轻松地回滚到之前的版本,或者在多个版本之间进行切换。
Docker镜像采用分层存储的方式,相同的基础镜像可以被多个容器共享。这不仅节省了磁盘空间和下载时间,还使得镜像的更新和升级更加高效。

Docker的发展趋势

  • 容器云
    随着云计算技术的发展,越来越多的企业开始将容器部署到云端,形成了容器云的概念。
    容器云提供了更加灵活、高效和可扩展的应用部署和管理方式。
  • 服务网格
    服务网格是一种微服务架构下的网络通信技术,它提供了服务间的通信管理、负载均衡、熔断和故障恢复等功能。
    Docker生态中的服务网格解决方案(如Istio)正在逐渐成为微服务架构下的标准配置。
  • 安全增强
    随着容器技术的广泛应用,安全问题也日益凸显。
    Docker生态正在不断加强安全方面的投入,提供了更加完善的身份验证、授权和审计机制,以及安全扫描和漏洞修复功能。
  • 边缘计算和物联网
    Docker生态正在向边缘计算和物联网领域扩展,提供了轻量级、高效和可靠的容器化解决方案。
    这些解决方案能够满足边缘设备和物联网设备对资源限制和实时性的要求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【报错记录】Steam迁移(移动)游戏报:移动以下应用的内容失败:XXX: 磁盘写入错误

前言 由于黑神话悟空,导致我的2TB的SSD系统盘快满了,我又买了一块4TB的SSD用来存放游戏,我就打算把之前C盘里的游戏移动到D盘,结果Steam移动游戏居然报错了,报的还是“磁盘写入错误”,如下图所示&#xff…

攻防世界37-unseping-CTFWeb

攻防世界37-unseping-CTFWeb <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("…

LabVIEW 版本控制

在软件开发中&#xff0c;版本控制系统&#xff08;VCS&#xff09; 是管理代码版本变化的核心工具。对于 LabVIEW 用户&#xff0c;虽然图形化编程带来高效开发体验&#xff0c;但由于其特有的二进制 VI 文件格式&#xff0c;传统文本比较工具无法直接用于 LabVIEW 项目。这时…

Cesium着色器的创意和方法(五——Polyline)

不接受反驳&#xff0c;线段在三维里面的渲染比多边形的渲染更复杂。因为线是没有宽度的&#xff0c;并且还需要时时刻刻向着你。 首先看下Cesium的线段的一些效果。这条线段非常宽&#xff08;20个像素&#xff09;&#xff0c;有两个需要留意观察的。一是线段并非实时面对我…

独立开发者赚钱心法

一、独立开发者的身份转变 开发者到多重角色&#xff1a;独立开发者不仅是程序员&#xff0c;还是产品经理、设计师、文案、销售、运营、客服&#xff0c;最重要的是成为“老板”。思维转变&#xff1a;将开发程序视为一门生意&#xff0c;而非单纯的技术实现。 二、赚钱的核…

Hook小程序

下载&#xff1a; https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python 配置&#xff1a; pip install -r requirements 实现&#xff1a; 开启小程序开发者模式&#xff0c;类似浏览器F12 效果&#xff1a; 使用&#xff1a; 退出微信&#xff0c;进入安装的目录…

【Spring Security系列】10分钟实现 SpringSecurity + CAS 完美单点登录方案

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 【Spring Security系列…

Spring Boot编程训练系统:构建可扩展的应用

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足&#xff0c;创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分&…

提升AI性能的关键大型语言模型(LLM)压缩策略

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

「IDE」集成开发环境专栏目录大纲

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「IDE」集成开发环境&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定…

关于 npm 更新镜像源问题

npm&#xff08;Node Package Manager&#xff09;&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块&#xff08;包&#xff09;的标准。&#xff09; 查看当前npm版本 npm -v 10.9.0 执行以下命令报错 npm install --registryhttp…

Worldly平台更新Higg FEM 2024模块价格及购买指南

近日&#xff0c;LEVERAGE供应链管理从美国可持续服装联盟&#xff08;Cascale&#xff09;验证官方Worldly平台模块订阅更新中获悉&#xff0c;FEM2024模块价格更新的重要信息。此次更新涉及工厂环境模块&#xff08;FEM&#xff09;和工厂社会劳工模块&#xff08;FSLM&#…

MQ的实际使用

前言: 在这一篇文章当中我会以RcoketMQ来对其的使用的场景进行一个仔细地说明,这个里面也会涉及到一些额外的知识,看完之后对面试而言的话那么就是直接拿捏,当然在看这篇文章之前要先看MQ的基础知识-CSDN博客 毕竟基础才是王道,下面就是开始我们的正菜 在我的基础的那篇文章中就…

MFC图形函数学习08——绘图函数的重载介绍

在《MFC图形函数学习06——画椭圆弧线函数》中介绍了CPoint类、POINT结构体&#xff1b;在《MFC图形函数学习07——画扇形函数》中介绍了CRect类、RECT结构体。在介绍完后&#xff0c;没有介绍它们怎样使用。实际上&#xff0c;这些类和结构体对象或指针也是我们学习过的绘图函…

SAP-ABAP开发-BAPI

BAPI基于数据库表的操作函数传入传出数据&#xff0c;本身函数有接口与增强无关 目录 一、BAPI接口定义 二、业务对象 三、查询方法 四、调用 五、BAPI创建 &#xff08;1&#xff09;在DDIC中创建一个结构 &#xff08;2&#xff09;创建BAPI函数模块和函数或API方法 …

Ceph MDS高可用架构探索:从零到一构建多主一备MDS服务

文章目录 Ceph实现MDS服务多主一备高可用架构当前 mds 服务器状态添加 MDS 服务器验证ceph集群当前状态当前的文件系统状态设置处于激活状态 mds 的数量MDS 高可用优化分发配置文件并重启 mds 服务 Ceph实现MDS服务多主一备高可用架构 Ceph 的元数据服务&#xff08;MDS&#…

python实战(八)——情感识别(多分类)

一、任务目标 本文使用的是来自Kaggle的一个情感识别数据集&#xff0c;这个数据集的总数据量是5934条&#xff0c;标签为anger、fear、joy三种情感的其中一种&#xff0c;很明显是一个多分类任务。这里&#xff0c;我们将使用微调技巧进行深度学习建模&#xff0c;同时我们会比…

价格战背后:即时零售三小龙的致命伤

价格战&#xff0c;从来就不仅仅是低价&#xff0c;低价前面永远要加上定语&#xff1a;确保品质和服务的。价格战是减法&#xff0c;更是加法。减去的是价格水分&#xff0c;加上的是品质和服务保障。 转载|原创新熵 作者丨宜新 编辑丨赛柯 今年双十一的热点&#xff0c;让人…

sd1.5/sdxl的推理,训练

1.sd1.5/sdxl的推理 主要讲述一下unet的降噪&#xff0c;以及采样器的作用&#xff0c;已sd1.5为例&#xff0c;sdxl类似 unet的降噪过程中&#xff0c;如20步降噪&#xff0c;这20个unet共用的一个权重 1.1 timesteps 根据unet的降噪步数&#xff0c;即num_inference_steps…

有哪些工具可以快速压缩图片呢?分享三个简单好用的图片压缩工具

现在的图片经常会因为图片过大的问题&#xff0c;影响在网上的上传使用&#xff0c;一般在平台上传图片时需要比较小的图片。但是随着现在图片质量的提升&#xff0c;导致图片的文件也越来越大&#xff0c;想要缩小图片大小&#xff0c;可以选择使用压缩图片的方法来处理。下面…