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

news2024/11/24 4:25:16

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生态正在向边缘计算和物联网领域扩展,提供了轻量级、高效和可靠的容器化解决方案。
    这些解决方案能够满足边缘设备和物联网设备对资源限制和实时性的要求。

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

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

相关文章

大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【测试框架篇】单元测试框架pytest(3):用例执行参数详解

一、前言 上一篇内容介绍了用例编写的规则以及执行用例,执行用例时我们发现有些print输出内容,结果没有给我们展示,这是因为什么原因呢?接下来我们会针对这些问题进行阐述。 二、参数大全 我们可以在cmd中通过输入 pytest -h 或…

设计模式-七个基本原则之一-开闭原则 + SpringBoot案例

开闭原则:(SRP) 面向对象七个基本原则之一 对扩展开放:软件实体(类、模块、函数等)应该能够通过增加新功能来进行扩展。对修改关闭:一旦软件实体被开发完成,就不应该修改它的源代码。 要看实际场景,比如组内…

Android Room框架使用指南

Room框架使用指南 项目效果创建应用,配置Gradle1、在app Module的build.gradle配置kapt插件2、配置依赖:3、配置依赖包版本号创建实体类创建DAO1、DAO简介2、WordDao设计以及相关注解说明3、监听数据变化添加Room数据库1、Room数据库简介2、实现Room数据库实现存储库实现View…

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个: 1. npm (Node Package Manager) 简介: npm 是 Node.js 的默认包管理器,也是最广泛使用的包…

C++builder中的人工智能(23):在现代C++ Windows上轻松录制声音

在这篇文章中,我们将探讨如何在现代C Windows上轻松录制声音。声音以波形和数字形式存在,其音量随时间变化。在C Builder中,使用Windows设备进行录音非常简单。要录制声音,在多设备应用程序中,必须使用FMX.Media.hpp头…

科目一汇总笔记2024

知识点,一天看一遍;提前一周即可;真实考试比“驾校宝典”模拟题简单。 1 知识点汇总 2 错题总结 增驾1轻 2中 3重 能见度 200 100 50 速度60 40 20 两条车道是:100 60 三条车道是:110 90 60 四条车道是:110 90 90 60 高速小车最高120其…

【详细】如何优雅地删除 Docker 容器与镜像

内容预览 ≧∀≦ゞ 镜像与容器的区别删除容器和镜像的具体步骤1. 删除容器步骤 1:查看当前运行的容器步骤 2:停止容器步骤 3:删除容器 2. 删除镜像步骤 1:查看镜像列表步骤 2:删除镜像 3. 删除所有容器和镜像 使用 1Pa…

华为eNSP:AAA认证(pap和chap)telnet/ssh

pap模式 一、拓扑图 二、配置过程 1、这个型号路由器是不带串口的,所以需要添加串口板卡 2、加入串行接口卡槽 右击路由,选择设置,将串口板卡拖动到路由器扩展槽,并开机即可 3、认证方路由器配置 [r8]aaa #进入aaa认证 [r8-a…

HCIP—快速生成树协议(RSTP)实验配置

一、回顾STP和STP的缺点和不足 1.STP的概述: STP(生成树协议)是一种用于在网络中防止产生环路的链路管理协议。 2.STP的作用: 解决二层环路,防止广播报文产生。但是网络拓扑收敛较慢,影响通信质量。 3…

qt QSyntaxHighlighter详解

1、概述 QSyntaxHighlighter是Qt文本处理框架中的一个强大工具,它专门用于实现文本编辑器中的语法高亮功能。通过自定义高亮规则,QSyntaxHighlighter可以实现对代码编辑器、富文本编辑器中的关键字、注释等内容的高亮显示。这一功能对于提升代码的可读性…

PyQt5 加载UI界面与资源文件

步骤一: 使用 Qt Designer 创建 XXX.ui文件 步骤二: 使用 Qt Designer 创建 资源文件 步骤三: Python文件中创建相关类, 使用 uic.loadUi(mainwidget.ui, self ) 加载UI文件 import sys from PyQt5 import QtCore, QtWidgets, uic from PyQt5.QtCore import Qt f…

国家级财经类211/985学科院校招收申请制硕士

国家级财经类211/985学科院校招收申请制硕士 ◎免试入学,边学边考,申硕便捷; ●1.5-2年制,无需辞职,远程学习; ◎考试方式灵活,可多次申考; ●申请考核制,学信网报名注…

Spring Boot - 扩展点 EnvironmentPostProcessor源码分析及真实案例

文章目录 概述EnvironmentPostProcessor 作用EnvironmentPostProcessor 实现和注册创建类并实现接口注册到 Spring Boot常见应用场景 源码分析1. EnvironmentPostProcessor 接口定义2. 扩展点加载流程3. 加载 EnvironmentPostProcessor 实现类4. EnvironmentPostProcessor 执行…

解决表格出现滚动条样式错乱问题

自定义表格出现滚动条时,会因为宽度不对等导致样式错乱; 解决思路: 监听表格数据的变化,当表格出现滚动条时,再调用更新宽度的方法updateWidth,去改变表格头部的宽度,最终保持表格头部和内容对…

.NET中通过C#实现Excel与DataTable的数据互转

在.NET框架中,使用C#进行Excel数据与DataTable之间的转换是数据分析、报表生成、数据迁移等操作中的常见需求。这一过程涉及到将Excel文件中的数据读取并加载至DataTable中,以便于利用.NET提供的丰富数据处理功能进行操作,同时也包括将DataTa…

albert模型实现微信公众号虚假新闻分类

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

java的JJWT 0.91在jdk21中报错的解决方法

参考了很多其他人的办法,只有这种方式可以解决问题 JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西 如果根据黑马的视频,导入了阿里云OSS的相关依赖,自然不会…

最高提升20倍吞吐量!豆包大模型团队发布全新 RLHF 框架,现已开源!

文章来源|豆包大模型团队 强化学习(RL)对大模型复杂推理能力提升有关键作用,然而,RL 复杂的计算流程以及现有系统局限性,也给训练和部署带来了挑战。传统的 RL/RLHF 系统在灵活性和效率方面存在不足&#x…

云计算:定义、类型及对企业的影响

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算:定义、类型及对企业的影响 云计算:定义、类型及对企业的影响 云计算:定义、类型及对企…