小白了解Docker容器技术

news2024/11/22 19:30:00

一、什么是Docker👑

        有一个最常见的例子来很好的帮我们简单了解Docker容器技术:

        当我们在一台计算机中配置好了环境,花费了极大的时间和精力成功开发部署好了一个应用。准备尝试在不同操作系统、不同环境下部署这个应用时,我们需要在目标环境中安装依赖库、框架等,但是这些环境可能与开发环境不同,会发现有些 bug 并未在开发过程中被发现,运行时可能出现的不兼容性问题,导致运行失败。

Docker容器正是解决这样的问题的,通过Docker容器化技术,将应用程序及其依赖项打包成一个独立的容器,容器中包含了应用程序运行所需的所有依赖项和环境,通过容器化技术,可以在不同操作系统、不同环境中运行应用程序,避免了不兼容性问题。

但其实Docker的用处远不止如此:

  • 更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
  • 更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
  • 持续交付和部署:对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。Docker完全可以做到这一点。
  • 更轻松的迁移:由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
  • 更轻松的维护和扩展:Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

1.1 Docker对比传统虚拟机总结🎈

二、镜像、仓库和容器👑

        Docker包括了三个基本概念:

  • 镜像Image):Docker镜像①它是一个特殊的文件系统,提供Docker容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。②它不包含 任何动态数据,其内容在构建之后也不会被改变。③它是使用分层存储技术Union FS 来存储的。④它是通过Dockerfile来构建的,Dockerfile是一个文本文件,通过其描述的指令,Docker可以自动化构建出一个Dokcer镜像,并将其保存在Docker仓库中。

  • 仓库Repository):Docker仓库①它是一个用于存储、管理和分享Docker镜像的平台。②它分为公共仓库和私有仓库,公共仓库由Docker官方提供,私有仓库由用户自己搭建存储镜像。③通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本的镜像。

  • 容器Container):Docker容器①它和镜像之间是 实例 的关系。这样解释:假设python中有一个类(class)Person被创建,它的初始化参数为def __init__(self, name, age),那么当我们编译代码person1 = Person("Alice", 19),person2 = Person("Jon", 24)时,person1和person2就是两个不同的实例。②镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

2.1 容器与虚拟机的区别🎈

Docker容器和虚拟机主要区别在于他们的架构和资源利用方式不一样。

Docker容器是基于操作系统级别的虚拟化技术,它允许在单个操作系统实例中运行多个容器,每一个容器都可以拥有之间的应用程序、库和文件系统,并且它们都可以共享宿主机的操作系统的内核和硬件资源。因此占用的资源相对较少,启动和停止速度也非常快。

虚拟机则是基于硬件级别的虚拟化技术,它通过在物理服务器上运行多个虚拟机来实现资源的隔离和共享。多个虚拟机它们并非在同一个操作系统下,每一个虚拟机都有之间的操作系统和应用程序,并且它们需要使用虚拟化层来模拟硬件资源,所以占用的资源相对较多,启动和停止的速度比较慢。

这也是为什么Docker容器为什么更加轻量、灵活和高效的原因。

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

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

相关文章

图及其与图相关的算法

⭐️前言⭐️ 本篇文章主要介绍图及其与图相关的算法 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主…

如何在 Rocky Linux 上检查磁盘空间?

在 Rocky Linux 上检查磁盘空间是系统管理和维护的重要任务之一。磁盘空间的监控和管理可以帮助我们及时发现和解决存储空间不足的问题,以确保系统的正常运行。本文将详细介绍在 Rocky Linux 上检查磁盘空间的方法。 方法 1:使用 df 命令 df 命令是 Li…

SOLIDWORKS技巧大全培训教程

1 您可以使用 CTRLTAB 键循环进入在 SolidWorks 中打开的文件。 2 使用方向键可以旋转模型。按 CTRL 键加上方向键可以移动模型。按 ALT 键加上方向键可以将模型沿顺时针或逆时1 您可以使用 CTRLTAB 键循环进入在 SolidWorks 中打开的文件。 2 使用方向键可以旋转模型。按 CTRL…

【CloudCompare教程】012:基于点云数据的测量功能

本文讲解CloudCompare基于点云数据的测量功能,主要有:点云索引、坐标、距离、角度、面积、标签等。 文章目录 一、加载地形点云数据二、基于点云数据的测量功能1. 选择单点并显示信息2. 选择两点并显示分割信息3. 选择三点并显示相关三角形信息4. 定义矩形2D标签5. 保存当前标…

Milvus向量数据库

Milvus vector database 第一章 Milvus概述 Milvus创建于2019年,唯一的目标是:存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量embedding vectors。 存储对象:向量 NOTE:embedding vectors是对非结构…

c#快速入门(下)

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析2 目录 👉🏻Inline和lambda委托和lambda 👉&#x1f…

上海斯歌荣获中国低代码/零代码行业“卓越影响力厂商奖”

3月19日,在「第三届中国 ISIG 产业智能大会」隆重的颁奖典礼上,上海斯歌被授予“卓越影响力厂商奖”,并入围国内权威咨询机构LowCode低码时代的《2022年中国低代码&零代码行业研究报告》卓越影响力榜单。 「第三届ISIG中国产业智能大会」…

如何编写接口自动化框架系列通过yaml来管理测试用例(四)

本文是接口自动化测试框架系列篇的第四篇 ,主要介绍yaml包的使用 。自动化测试的本质是将功能测试用例交给代码去 目录 1. yaml介绍? 2.python中的yaml包 3.项目中使用yaml包 4 项目总结 执行 ,测试人员往往是在自动化框架添加对应的测试…

惠普83752B高功率合成扫频器,20 GHz

惠普83752B扫频仪为元器件测试市场带来了卓越的综合性能,在通用台式扫频仪、扫频仪或标量测试应用中,83752B提供了性价比最高的性能。这款扫频仪在保持模拟源速度的同时,提供了卓越的精度和稳定性。全合成CW、步进和科坡扫描模式可在宽带和窄…

QT+OpenGL几何着色器

QTOpenGL几何着色器 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 几何着色器 几何着色器的输入是一个图元(如点或者三角形)的一组顶点几何着色器可以再顶点发送到下一着色器…

Linux——进程的等待

目录 前言: 一.进程等待 父进程回收子进程信息的相关函数1:wait函数 实验案例1:设置wait函数参数为NULL 实验案例2:wait函数带wstatus参数的案例:当子进程正常运行完退出时 情况3: wait函数带wstatus参数…

Softing“物联网连接和OPC UA通信”系列研讨会

— 免费线上研讨会概览 — 您是否正在为车间应用寻找机器连接?您是否需要为创新的物联网解决方案制定架构决策?或者您是否已经选择了物联网平台,需要连接组件来访问自动化网络中的数据?在Softing线上研讨会中,我们将讨…

JavaScript 进阶 (三)

目录 编程思想 面向过程编程 面向对象编程 构造函数 原型 原型 constructor 属性 对象原型 原型继承 原型链 编程思想 面向过程编程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次 调用…

Python中的封装、继承与多态

1. 前言 面向对象的三大特性,想必大家肯定是耳熟能详。就是今天要介绍的内容:封装、继承、多态。面向对象的思想都是一样的,这里我用Python进行实现! 2. 封装 2.1 什么是封装呢? 封装就是:我写了一个类…

【T6/T3】根据畅捷通T6/T3账套备份文件判断软件的版本

【问题需求】 当畅捷通T6/T3软件只有正常的账套备份文件的时候, 通过账套备份文件判断软件版本, 进而安装软件恢复数据。 【解决方法】 【畅捷通T6】 找到T6的备份文件, 用记事本打开【UfErpAct.lst】文件。 查看【VersionbatchflagForUFDAT…

【linux】web基础与HTTP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 web基础与HTTP协议 一、DNS/HTML1.域名的概述2.域名注册3.网页的概念4.HTML概述5.网页基本标签 二、web基础1.web概述2.静态网页3.静态网页特点4.动态网页5.动态网页的特点 三…

软件开发SOLID设计原则

前言:SOLID设计原则,不管是软件系统还是代码的实现,遵循SOLID设计原则,都能够有效的提高系统的灵活和可靠性,应对代码实现的需求变化也能更好的扩展和维护。因此提出了五大原则——SOLID。 我是通过老师讲解以及老师…

【深入浅出Spring Security(三)】默认登录认证的实现原理

Spring Security 默认登录认证的实现原理 一、默认配置登录认证过程二、流程分析登录页面的由来表单登录认证过程(源码分析) 三、UserDetailsServiceSpring Security 中 UserDetailsService 的实现默认的 UserDetailsService 配置(源码分析&a…

【送书福利-第七期】《分布式中间件核心原理与RocketMQ最佳实践》

大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 本文目录 一、前言二、内容介绍三、作者介…

孪生诱捕网络在欺骗防御领域的应用

随着以数字化、网络化和智能化为特征的信息化浪潮的蓬勃兴起,信息已经成为重要的战略资源与重要生产要素,在国家的发展和人们的生产生活中起到至关重要的作用。信息化在给人们带来便利的同时,网络信息安全问题也日益凸显。经过多年的网络安全…