Docker中容器与粽子粽叶的相似性(迟来的端午祝福)

迟来的端午祝福!!!大家都要身体健康呀

-----20220604
摘要:近年来,我们已经看到云计算在市场中越来越重要。 Docker 目前在云计算市场的领先地位日益稳固,许多互联网公司都会选择使用 Docker 工具,但 Docker 作为一个方便创建和管理容器的工具,和云计算之间的联系是什么呢,Docker对于容器的管理又要如何理解,容器和包粽子的粽叶有什么联系呢?本文希望以一个较为轻松的视角来进行带入,帮助大家更加了解Docker中容器与云计算的相关知识

1 Docker容器与云计算技术

1.1 什么是云计算

云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。
我理解的就是将较大的数据分为许多比他小的小块,然后用多个服务器进行运算,提高运算效率,多路并行

1.2 Docker容器与Docker

Docker是一个用于应用程序级虚拟化的系统。虽然不同的Docker容器共享一个内核,但它们通常很少共享其他内容:文件、进程等都可以单独使用。它通常用于测试软件系统和在生产中运行它们。如果要介绍Docker,那么就必须要谈到容器这个内容,那么为什么我们需要强调容器这个概念呢
在这里插入图片描述

图1:基于容器的虚拟化堆栈
我们模拟一个场景,一家公司一般会有测试,技术,以及运维这几个职位,有一天程序员写好了一个程序,但是测试与运维和他的环境不同,那么在运行时,就需要重新搭建环境进行运行,这样较为耗时,并且实际运用中可能会出现很多的问题,
早期,大家都认为硬件抽象层基于hypervisor的虚拟化方式可以最大程度上提供虚拟化管理的灵活性。各种不同操作系统的虚拟机都能通过hypervisor(KVM、XEN等)来衍生、运行、销毁。然而,随着时间推移,用户发现hypervisor这种方式麻烦越来越多。为什么?因为对于hypervisor环境来说,每个虚拟机都需要运行一个完整的操作系统以及其中安装好的大量应用程序。但实际生产开发环境里,我们更关注的是自己部署的应用程序,如果每次部署发布我都得搞一个完整操作系统和附带的依赖环境,那么这让任务和性能变得很重和很低下。
基于上述情况,人们就在想,有没有其他什么方式能让人更加的关注应用程序本身,底层多余的操作系统和环境我可以共享和复用?换句话来说,那就是我部署一个服务运行好后,我再想移植到另外一个地方,我可以不用再安装一套操作系统和依赖环境。
这时候就需要我们使用容器对于配置环境以及文件进行一个打包,容器技术为打包服务栈提供了一种更为高效的方式,那么Docker能够让我们更为方便的创建和使用容器。
Docker有这样几个概念:dockerfile,image,container。我们可以简单的把image理解为可执行程序,container是运行起来的进程。写程序的话需要源代码,那么“写”image就需要dockerfile,dockerfile就是image的源代码,docker就是“编译器”。
因此我们只需要在dockerfile中指定需要哪些程序,依赖什么样的配置,之后把dockerfile交给“编译器”docker进行编译也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。
在这里插入图片描述

图2:Motivational example of a workflow when developing a Dockerfile.
(写Dockerfile时工作流的激励示例)

1.3 容器与粽子粽叶的相似性

针对上面的描述,我们可以看出,容器给人第一印象就是——“装”,它可以装载很多东西。其实它最重要的作用也就是我们上面所提到部署一个服务运行好后,我再想移植到另外一个地方,我可以不用再安装一套操作系统和依赖环境。需要我们使用容器对于配置环境以及文件进行一个打包时,容器技术为打包服务栈提供了一种更为高效的方式。

那么和粽子有什么相似性呢?
在这里插入图片描述
假设我们把包粽子准备过程中的糯米与馅料统一编号,每一粒米与每一份板栗都设置为特定的数字,这是我们先将其按数字顺序排列整齐,但是在搬运的过程中,由于其排列极不稳定,所以他会发生位置的变化,顺序都被打乱了,那我们在之后如果想要进行一个查找,或是排列回之前的顺序,是一件较为麻烦的事。因此我们可以用粽叶包裹粽子,使其能过在于其格式划一,并可以层层重叠,将一定数量的馅料包裹住,稳定其排列顺序,使得顺序不易乱,不让其不同粽子里的馅料乱在一起,无法正常分离。
这其实也与我们容器技术的内核是一样的,我们的核心就是为了让我们需要传输的东西能够稳定、正确的传输到另一个地方,运行时不受运行硬件环境,或是传输过程中所出现问题的影响,正常运行。

1.3 Docker与云计算的关系

在Docker实验上机时,我就好奇这个问题,Docker似乎是让我们更方便的创建和使用容器,但这和云计算之间有什么关系呢?
“由Docker等技术支持的云计算和基础架构即代码(Infrastructure as Code,IaC)决定了构建和部署的软件系统数量。”这是《Developing Docker and Docker-Compose Specifications:A Developer’s Survey》里面的第一句话,随着云计算的广泛应用以及开发和运营团队高效协作的需要,Dcoker的使用越来越突出,其中Docker作为容器技术的一个广受欢迎的例子,已经成为了软件开发中的标准,并在改变完全堆栈虚拟化的范式方面发挥了重要作用。从中我们可以看出,Docker对于云计算而言,十分重要。他重要的原因就在于:Docker 容器允许开发人员将他们的应用程序与所需的依赖项(例如配置、框架、库和运行时)打包到其中,由此可以实现不同云计算之间应用程序的可移植性,提供了一个把应用程序拆分为分布式组件的方法,并且用户还可以管理和括展这些容器成为集群。这也是为什么Docker能够在云计算市场中广泛运用的原因
在这里插入图片描述

图3:虚拟机和Docker容器

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值