前言

上一篇我们讲解了虚拟机和容器的区别,本节我们来讲讲Docker中关于Dockerfile、镜像、容器等基本概念。Docker是一个在容器内开发、部署、运行应用程序的平台,Docker本质上是容器化的代名词,容器对于提高软件开发和数据科学的安全性,可重复性和可扩展性起到了重要作用,拥抱Docker已是趋势,让我们进入Docker课堂。

烹饪材料

接下来我们通过学习如何烹饪披萨,一探究竟Docker平台各个基本概念,一说到吃,大家应该马上就提起兴趣了。

Docker Container(容器)

啥是容器啊,搞的这么高深,这么玄乎的概念,于是乎 ,我终于找到容器是什么了,如下:

哈哈,这就是容器,还是在某宝上截图来的,不过此容器非彼容器,如上图是一个真实存在的物理收纳箱容器,看到如上真实存在的容器,我们能想到这样一个容器有什么特点呢?

1.承载东西-这当然是最基本的啦,既然是收纳箱,就是用来装东西的,有些东西可以放在收纳箱内,也可以放在收纳箱外(这就好比在容器内可以装载应用程序及其依赖)

2.方便携带-有了收纳箱我们可以随处搬运,就像小孩的玩具一样,可以从家拿到学校,携带方便。(这就好比容器轻巧,可以在任何地方运行)

3.接口访问-收纳箱上方有一个盖盖,我们将其打开,可以放入或取出物品(这就好比容器与外界有连接的机制,比如通过命令行进行数据交互)

4.远程获取-制造商通过对应模具模板可以制造出成千上万个收纳箱,然后将收纳箱放到某宝或某东上,最终我们在某宝或某东上购买这个收纳箱(这就好比模具是镜像,通过镜像制作容器)

物理形式存在的收纳箱容器从被制造出来的那一刻就被赋予了生命,既然被赋予了生命当然也就存在对应的生命周期,我们可将收纳箱的生命周期归纳为四个阶段:孵化、闲置、使用、废弃。万事万物一旦存在,无论是物理形式还是虚拟形式都有其生命周期,容器也不例外,只不过容器由人为操纵控制其生命周期直至其关闭。

通过以上引入生活实例物理收纳箱容器的隐喻来对比虚拟化容器,得出虚拟化容器的特点,想必到此应该对容器有了一点点通透的了解。

Docker Image(镜像)

上述关于关于物理存在的收纳箱容器是以某种实例而存在,虽说容器是虚拟的,但是到底是如何虚拟出来的呢?它是以何种生命形式而存在的呢?答案则是:镜像孕育了容器,也就是说镜像构造出了容器。那么镜像又是什么呢?从语义层面理解,我们可能认为就是图像,而图像可能是根据手机或者摄像机将拍摄范围的全部内容映射到物理图像上,但是事实情况真的如此吗?

显然不是,镜像其实就是一个模具或模板,对于收纳箱的模板如下,我们根据模板而刻画出如上漂亮且精致的收纳箱容器。

如上所述,我们根据镜像刻画出了容器,镜像是不可变的主模板,用来抽取出完全相同的容器,而镜像包含应用程序所需要运行的Dockerfile、代码、库等,如此这些被完全捆绑在一起。

Dockerfile(镜像说明书)

讲完了镜像,我们又有疑惑了,镜像又是怎么来的呢?通过Dockerfile来创建,Dockerfile是一个文件,这个文件中包含了如何构建镜像的说明,Dockerfile只是用来构建初始镜像层的基本镜像,我们可将其看做是镜像的说明书。根据Dockerfile中的使用说明,我们可以将附加层堆叠在基础镜像层的顶部。最后根据Dockerfile代码,在其他层的顶部堆叠薄的可写层,每一层是如此的薄,堆叠可写的过程就好似洋葱的成长过程,多么形象而生动,如果你愿意一层一层,一层的剥开我的心,你会发现 你会讶异....哈哈。

Container Registry (镜像仓储)

如果我们希望其他人能够利用我们的镜像来创建容器,我们可以将镜像传送到容器注册表中,Docker Hub是最大的默认注册表位置。

烹饪披萨

关于披萨所需要的材料我们都已配齐,接下来我们试试来自制披萨,好不好吃不要紧,重要的是享受制作的过程。

第一步:我们需要知道制作披萨的配方,这个配方好比Dockerfile,里面包含如何制作出披萨的说明。

第二步:披萨有几层,比如包含面包层、奶酪层、酱汁层等等,因为配方说明我们知道要做什么,这是不可更改的计划,这就好比我们从底层首先构建出基本的镜像如ubuntu,然后添加奶酪层等,这一层相当于我们安装外部库,比如python,最后再刷上一层泰国甜辣酱,简直是人间美味,这就相当于我们已编写好的应用程序代码,最终就有了披萨的原型,也就形成了Docker Image(镜像),

第三步:我们做好了披萨,这个时候我们需要将其放入烤箱中,烤箱就好比Docker平台,当我们将买回来的烤箱放在家里,这个时候就好比将Docker安装在计算机上一样,当我们扭动烤箱按钮的那一刻,我们就开始烹饪披萨,这就像我们开始创建并启动容器啦。

第四步:等待一小会,当披萨熟了,熟透了的披萨就好比Docker容器。

第五步:最终大功告成,我们开始吃披萨,吃披萨就好比我们在容器中使用应用程序一样。

烹饪总结

本节我们通过烹饪披萨讲述了Docker平台上基本概念,以及各个基本概念之间的关系,它们是如何关联起来的,希望通过本文的讲解,对于阅读本文的童鞋能对概念有更深入的理解,应该不会通过我的讲解,越讲越懵逼吧,哈哈。有了对基本概念的理解,后续陆续引入例子就一目了然啦,感谢阅读,我们下节再会。

Docker系列之烹饪披萨(二)的更多相关文章

  1. 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍

    docker出来也有很多年了,但用到的公司其实并不是很多,docker对传统开发是一个革命性的,几乎颠覆了之前我们传统的开发方法和部署模式,而大多 公司保守起见或不到万不得已基本上不会去变更现有模式. ...

  2. Docker系列01—容器的发展历程---Docker的生态圈

    本文收录在容器技术学习系列文章总目录 Docker 和容器技术的发展可谓是日新月异,本文试图以全局的视角来梳理一下 docker 目前的生态圈.既然是概览,所以不会涉及具体的技术细节. Docker ...

  3. Docker系列07—Dockerfile 详解

    本文收录在容器技术学习系列文章总目录 1.认识Dockerfile 1.1 镜像的生成途径 基于容器制作  dockerfile,docker build 基于容器制作镜像,已经在上篇Docker系列 ...

  4. docker系列 参考文章

    Docker 系列一(概念原理和安装) Docker 系列二(操作镜像) Docker 系列三(容器管理) 持续更新... ubuntu 安装docker 参考文章 :(https://blog.cs ...

  5. Docker 容器高级操作[Docker 系列-3]

    关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 上篇文章向读者介绍了一个 Nginx 的例子,对于 Nginx 这样一个容器而言,当它启动成功后,我们 ...

  6. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  7. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(三)

    在之前系列博文中,已经介绍完了数据采集和数据存储,那数据如何展示呢?所以今天就专门来讲下数据如何展示的问题. 以前博文参考: Docker系列--InfluxDB+Grafana+Jmeter性能监控 ...

  8. Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)

    在之前博文中,已经成功的实现了邮件推送.目前主流的办公终端,就是企业微信.钉钉.飞书.今天来分享下微信推送,我们具体来看. 企业微信 在配置企业微信推送时,需要有微信企业,具体如何注册.使用,另外百度 ...

  9. Docker系列——Grafana+Prometheus+Node-exporter钉钉推送(四)

    近期搭建的服务器监控平台,来进行一个总结.主要分为监控平台的搭建.告警中心的配置以及消息的推送.推送的话,支持多种终端.具体详细可查看之前的博文,在这里罗列下,方便查看. Docker系列--Graf ...

随机推荐

  1. Kafka集群部署指南

    一.前言 1.Kafka简介 Kafka是一个开源的分布式消息引擎/消息中间件,同时Kafka也是一个流处理平台.Kakfa支持以发布/订阅的方式在应用间传递消息,同时并基于消息功能添加了Kafka ...

  2. java-NIO-概念

    现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty 一.概述 NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selec ...

  3. HDU 5616:Jam's balance(背包DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=5616 题意:有n个物品,每个重量为w[i],有一个天平,你可以把物品放在天平的左边或者右边,接下来m个询问,问是 ...

  4. HDU 5792:World is Exploding(树状数组求逆序对)

    http://acm.hdu.edu.cn/showproblem.php?pid=5792 World is Exploding Problem Description   Given a sequ ...

  5. Flags Over Objects

    The Flags Over Objects anti-pattern occurs when behavior is written outside of an object by inspecti ...

  6. 使用PowerShell比较本地文本文件与Web上的文本文件是否相同

    使用PowerShell比较本地文本文件是否相同通常有两种方式:1.通过Get-FileHash这个命令,比较两个文件的哈希是否相同:2.通过Compare-Object这个命令,逐行比较两个文件的内 ...

  7. STM32F072从零配置工程-建立工程文件

    快速建立工程有两种方法: 第一种是通过官方提供的外设库来搭建,好处是使用库函数,而不需要深入研究寄存器配置: 第二种是通过STM32CubeMX,好处是直观快速,可以直接帮你配置好功能和时钟,不过使用 ...

  8. SSAS Tabular关系设计--时间最小粒度维度

    这两天设计的T2模型,涉及日期维度表中粒度的选择,因为一般实际销售达成ACT表是按天为标准记录的,而销售目标表TGT一般是按月记录,特此总结一下建模技巧. 数据仓库: 时间维度表,最小粒度为DATE. ...

  9. Excel催化剂开源第49波-Excel与PowerBIDeskTop互通互联之第三篇

    在PowerBIDeskTop开启的SSAS服务,和Sqlserver所开启的一个本质的区别是,前者其端口号是随机生成的,即上一次打开获得的端口号,下一次关闭后再打开,系统分配给它新的端口号,而后者因 ...

  10. 「PowerBI相关」一款极其优秀的DAX建模工具Tabular Editor

    做Excel插件开发的时间久了,大部分人的印象是笔者是做软件开发,谈不上软件,也是插件开发级别. 但笔者更希望大家记住的身份是做BI开发,特别是企业级的BI. 故也借着Excel催化剂这个平台,输送一 ...