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
    +关注

    关注

    88

    文章

    11810

    浏览量

    219513
  • 服务器
    +关注

    关注

    14

    文章

    10345

    浏览量

    91739
  • 容器技术
    +关注

    关注

    1

    文章

    21

    浏览量

    5780
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在 i.MX RT1050 上实现两镜像(引导加载程序应用程序)的双 HAB 身份验证?

    )。 目前,我的想法是实现自定义身份验证机制在第二阶段引导加载程序中。引导加载程序将: 读取应用程序映像页脚(
    发表于 04-07 06:14

    明晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,
    的头像 发表于 11-11 11:53 767次阅读
    明晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    【直播预告】下周三晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,
    的头像 发表于 11-06 18:05 2026次阅读
    【直播预告】下周三晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析

    发布阶段的镜像打包,为开发者提供了全面的支持。本文将详细介绍睿擎平台文件系统的综合使用方法。、睿擎平台文件系统设计1.1睿擎平台存储布局概览睿擎平台采用了清晰的
    的头像 发表于 11-05 18:13 8281次阅读
    睿擎派<b class='flag-5'>文件系统</b>指南:从开发到发布全流程实践 | 技术解析

    飞凌嵌入式ElfBoard-系统应用编程之文件I/O

    1.1 文件I/O的简单概念本章节仅作为初识简单概念,在后续章节会对相关概念进行深入介绍。在linux系统中有概念,
    发表于 10-24 08:57

    文件系统文件怎么循环覆盖的写入数据?

    请教文件系统数据写入的问题。 比如我新建文件,test.txt,写入数据超过512KB后
    发表于 09-22 08:20

    【创龙TLT113-MiniEVM开发板试用体验】相关开发过程的体验,以及与毫米波雷达的联调

    。 配置文件: 如网络配置、启动脚本等。 开发者如何使用: 开发者会将自己编译好的应用程序、库文件等放入这个目录,然后将其打包成
    发表于 08-20 12:50

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1723次阅读

    【米尔RK3576开发板免费体验】1、开发环境、镜像烧录、QT开发环境搭建以及应用部署

    会编译uboot、kernel,构建文件系统,并生成相应的系统镜像。同时在buildroot\\\\output\\\\rockchip_rk3576\\\\host目录中包含用于
    发表于 07-14 11:26

    【创龙TL3562-MiniEVM开发板试用体验】问题3 扩展ubuntu文件系统

    在ubuntu系统下,没放多少自定义的东西,报空间不够,原以为是内存不够,故换一个32G的SD卡作为根文件系统(其实根本原因是rootfs.img镜像大小,默认rootfs.img分区
    发表于 07-08 22:11

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统之应用开机自启

    在busybox构建文件系统章节我们已经大概了解,文件系统启动后执行的第一个用户进程是init进程,init进程会解析etc/inittab文件,执行inittab中的各个子进程,打开
    发表于 06-26 13:40

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    临时的设备,例如网络文件系统/proc虚拟文件系统,为内核提供向进程发送信息的机制。操作系统运行时,进程
    发表于 06-19 17:22

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

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4
    的头像 发表于 06-10 12:03 872次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例

    适配多种系统,米尔瑞芯微RK3576核心板解锁多样化应用

    兼容性和优化性能。此镜像集成了 Android 系统的核心功能和常用应用程序,为用户提供熟悉且功能丰富的移动操作
    发表于 05-23 16:07

    Linux文件系统打包及镜像制作,触觉智能RK3562开发板演示

    本文介绍Linux开发板文件系统打包及镜像制作的方法,演示Linux文件系统打包及镜像制作,适用于想将配置好的系统环境打包成
    的头像 发表于 04-28 16:45 1153次阅读
    Linux<b class='flag-5'>文件系统</b>打包及<b class='flag-5'>镜像</b>制作,触觉智能RK3562开发板演示