0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

镜像理包含应用程序以及其相关依赖的一个基础文件系统

lhl545545 来源:Linux爱好者 作者:Linux爱好者 2020-06-11 09:43 次阅读

Docker直译过来是码头工人,然而Docker给人的第一感觉是容器,容器技术英译为Linux Container, Container的直译有集装箱,容器两个意思,如果要形象的理解Linux Container的话还是叫集装箱技术比较好(可以结合着上图及LOGO理解这句话),由于这涉及到学术交流,及中国本土文化,念集装箱技术会比较奇怪,所以我们都称之为容器技术

为什么是“集装箱技术”

我们都知道码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色,「在于其格式划一,并可以层层重叠, 集装箱与集装箱之间互不影响」

于是乎,IT领域借鉴了这一理念,大家就在想,有没有可能大家「只需要关注程序本身?」

换句话来说,就是我部署一个服务运行好后,我再想移植到另外一个地方,

「不用再安装一套操作系统和依赖环境。」

这就像集装箱运载一样,我把一辆兰博基尼跑车(好比开发好的应用APP),打包放到一容器集装箱里,它通过货轮可以轻而易举的从上海码头(CentOS7.2环境)运送到纽约码头(Ubuntu14.04环境)。而且运输期间,我的兰博基尼(APP)没有受到任何的损坏(文件没有丢失),在另外一个码头卸货后,依然可以完美风骚的赛跑(启动正常)。

进入正题

定义: Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化

进一步认识Docker之前,我准备了两个关键词

虚拟化技术

容器技术

虚拟化技术

定义: Virtual Machine(又名VM) 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序[1]都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

通俗点来讲就是虚拟化是为一些组件(例如虚拟应用、服务器、存储和网络)创建基于软件的(或虚拟)表现形式的过程。

基于hypervisor(虚拟机管理系统)的虚拟化方式可以最大程度上提供虚拟化管理的灵活性。各种不同操作系统的虚拟机都能通过 hypervisor 来衍生、运行、销毁。

然而,随着时间推移,人们发现hypervisor这种方式麻烦越来越多。为什么?因为对于hypervisor环境来说,每个虚拟机都需要运行一个完整的操作系统以及其中安装好的大量应用程序, 如下图

但实际生产应用时,「我们更关注的是自己部署的应用程序本身」

容器技术

定义: 英文为Container 有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求

容器技术严格来说并不是虚拟化,没有客户机操作系统,是共享内核的。容器可以视为软件供应链的集装箱,能够把应用需要的运行环境、缓存环境、数据库环境等等封装起来,以最简洁的方式支持应用运行

Docker三大核心概念

镜像

容器

仓库

为了更好的理解,先讲大家讲个小故事

小A同学想要造一栋别墅,他重金请来了高级设计师,高级建造师,等各种高级工人,热火朝天历时二个月房子建成了,半年后,小A同学由于工作调动需要换到另一个城市,他只好在另一个城市花了重金又打造了一栋别墅

小A有一个朋友小B,跟小A是同样的场景,唯一不同的是,小B认识一个魔法师,这个魔法师施展了法术(构建镜像),将小B的别墅直接复制了一份(镜像),装到了小B的双肩包(仓库)里,小B去到另一个城市找了一片空地(容器)直接将装在书包里的房子拿了出来,拿出来的房子就能变成跟小B在原城市一模一样的房子

听完了故事,咱们再来理解docker的两句口号就更好理解了

「Build, Ship and Run (搭建,发送,运行)」

「Build once,Run anywhere (搭建一次,运行到任何地方)」

镜像如果进行形象的表述,我们可以将 Docker 镜像理解为包含应用程序以及其相关依赖的一个基础文件系统(存储着我们的程序和数据文件等等信息,镜像层可以理解为基本的镜像,可以通过组合多个镜像层生成一个新的镜像;也可以将一个镜像可以作为一个镜像层,成为组合别的镜像的一份子),在 Docker 容器启动的过程中,它以只读的方式被用于创建容器的运行环境,

容器容器和镜像一样,也是若干层的叠加,唯一区别是所有只读层的最上面一层,是一层可读可写层,可以记住这个简单的公式:容器 = 容器镜像 + 可读可写层

前面说镜像的时候我们有提到它是一个静态文件系统,那么既然容器跟它一样,所以,镜像跟容器都是一个静态概念,但是,容器是可以run起来的,当容器run起来时,就会成为一个被称作运行态容器的东西,

运行态容器(run container)是由静态容器(可读写的静态文件系统)、一个隔离的进程空间、以及运行于其中的程序进程所组成。我们通常用docker run运行起来的其实就是运行态容器,而使用docker stop停止后的容器,就是静态容器

仓库仓库(Repository)是最易理解的部分,大家都用过Node的包管理Npm,这个概念是一致的,仓库分为两种,本地及远程,当我们build好一个镜像后,这个镜像会先存放到本地仓库,当我们需要利用网络进行分发时,我们可以push到远程仓库,后续通过网络下载使用

官方的npm源下载有时候特别慢,这个是由于XX的原因,然后我们就需要使用国内的镜像源,那么docker 的操作也是一样的

容器技术的特性

一种技术的采用,一定有它适合的场景和优势。容器技术的流行原因,总结下来可能主要归功于以下的这些特性

轻量级(只打包必要的lib/bin)

秒布署(毫秒与秒之间)

易移植(「Build once,Run anywhere」)

弹性伸缩(高可用,节约成本)

总结

通过本文我们对Docker有了一个基本的认识, 知道了Docker Logo并不是一条咸鱼,容器技术与虚拟技术之间的差异,Docker的三大核心概念及其特性

但Docker中涉及的内容远不止于此,帅编也会在下个章节为大家讲解“实际工作场景中的Docker应用”
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11230

    浏览量

    208937
  • 服务器
    +关注

    关注

    12

    文章

    9024

    浏览量

    85187
  • 容器技术
    +关注

    关注

    1

    文章

    21

    浏览量

    5583
收藏 人收藏

    评论

    相关推荐

    服务器数据恢复—raid5阵列+reiserfs文件系统数据恢复案例

    位置有空的reiserfs超级块。 用户方需要恢复reiserfs文件系统中所有数据,包含数据库、网站程序与网页、OA系统中所有办公文档
    的头像 发表于 11-07 13:15 107次阅读

    TMS320硬件应用程序(包含扫描的文本)

    电子发烧友网站提供《TMS320硬件应用程序(包含扫描的文本).pdf》资料免费下载
    发表于 10-26 09:35 0次下载
    TMS320硬件<b class='flag-5'>应用程序</b>(<b class='flag-5'>包含</b>扫描的文本)

    Linux根文件系统的挂载过程

    Linux根文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统
    的头像 发表于 10-05 16:50 278次阅读

    如何构建Linux根文件系统

    构建Linux根文件系统涉及多个步骤和概念的过程,它对于Linux系统的启动和运行至关重要。
    的头像 发表于 10-05 16:47 236次阅读

    想提高开发效率,不要忘记文件系统

    ​同学们都知道,开发过程中文件系统的重要性,同样的,4G-Cat.1模组的文件系统也非常重要,它通常与数据传输速度、存储效率,以及数据安全性等有非常重要的关系,在应用开发中也非常重要。
    的头像 发表于 09-21 08:18 203次阅读
    想提高开发效率,不要忘记<b class='flag-5'>文件系统</b>

    [2K300适配OpenharmonyV4.1]根文件系统制作请教

    尝试更改制作文件格式为ext4,但是烧录时也失败了。 请问能否提供下Openharmony 根文件系统相关资料,或者开源下Openha
    发表于 09-11 11:18

    如何修改buildroot和debian文件系统

    本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian
    的头像 发表于 07-22 17:46 418次阅读
    如何修改buildroot和debian<b class='flag-5'>文件系统</b>

    linux--sysfs文件系统

    sysfs文件系统 sysfs,全称为System Filesystem,是由Linux内核实现的虚拟文件系统。它扮演着
    的头像 发表于 07-08 11:37 721次阅读
    linux--sysfs<b class='flag-5'>文件系统</b>

    鸿蒙开发文件管理:【@ohos.statfs (statfs)】

    该模块提供文件系统相关存储信息的功能,向应用程序提供获取文件系统总字节数、空闲字节数的JS接口。
    的头像 发表于 06-13 09:46 257次阅读
    鸿蒙开发<b class='flag-5'>文件</b>管理:【@ohos.statfs (statfs)】

    对Ubuntu16.04系统镜像进行热点测试

    ROOT 文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是ROOT 文件系统。 Docker
    发表于 05-27 17:10

    Linux系统如何扩展文件系统

    当数据盘没有创建分区,只在设备上创建了文件系统。或者格式化了硬盘,就直接mount上系统使用。
    的头像 发表于 02-21 09:53 807次阅读

    鸿蒙轻内核源码分析:虚拟文件系统 VFS

    VFS(Virtual File System)是文件系统的虚拟层,它不是实际的文件系统,而是
    的头像 发表于 02-18 14:50 768次阅读

    教你在Ubuntu系统上定制文件系统

    开发板都需要去apt-get安装,这样会大幅增加工作量,很不便于批量化生产。 能不能把软件起打包到镜像呢?这样每次烧写完就不用再去apt-get在线安装了。答案当然是肯定的,这就涉及到文件系统的定制了
    发表于 12-26 16:33

    系统镜像烧录

    系统镜像烧录 启动产品需要两步骤:烧录系统,启动系统 ArmSoM 系列产品的系统
    发表于 12-08 11:11

    服务器数据恢复—ocfs2文件系统被误格式化为Ext4文件系统的数据恢复案例

    由于工作人员的误操作,将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4
    的头像 发表于 12-04 10:49 421次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被误格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例