上一篇我们讲解了虚拟机和容器的区别,本节我们来讲讲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. Docker系列之镜像瘦身(五)

    本节我们来讲讲在我们在构建镜像过程中不出问题,同时使得最后所构建的镜像文件大小尽可能最小. 缓存(cache) Docker的优势之一在于提供了缓存,加速镜像迭代构建,我们知道构建镜像使用docker ...

  2. Docker系列二~自定义网桥

    Docker系列二 docker自定义网桥 查看本地网络 docker network ls #查看本地所有网络[root@localhost conf.d]# docker network ls N ...

  3. Docker系列(二十三)——Docker实例五Docker安装MongoDB实例

    < Docker实例三Docker安装MongoDB实例 > 前言 在前面一篇文章种,完成了 < Docker安装MySQL实例 >,本篇将继续镜像安装教程,并完成Docker ...

  4. Docker系列(二十一)——Docker实例三Docker安装Tomcat实例

    < Docker实例三Docker安装Tomcat实例 > 前言 在前面一篇文章种,完成了 < Docker安装Nginx实例 >,本篇将继续镜像安装教程,并完成Docker安 ...

  5. Docker系列(二十四)——Docker实例六Docker安装Redis实例

    < Docker实例三Docker安装Redis实例 > 前言 在前面一篇文章种,完成了 < Docker安装MongoDB实例 >,本篇将继续镜像安装教程,并完成Docker ...

  6. Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor

    Docker介绍及环境搭建参考: Docker系列一: docker介绍&&安装(含离线安装) Docker系列(二): 搭建docker镜像仓库-Nexus.Harbor Docke ...

  7. Docker系列之二:基于容器的自动构建

    自动构建系统是从美团的自动部署系统发展出来的一个新功能.每当开发人员提交代码到仓库后,系统会自动根据开发人员定制的构建配置,启动新的Docker容器,在其中对源代码进行构建(build),包括编译(如 ...

  8. Docker系列 深度使用nextcloud(二)

    转自我的个人博客https://blognas.hwb0307.com.欢迎关注! 前言 通过Docker系列 深度使用nextcloud(一),我们对nextcloud有了相对深入的了解. 这一节我 ...

  9. Docker系列 四.Docker部署SpringBoot

    四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...

最新文章

  1. Java项目:在线考试系统(java+springboot+vue+jsp+mysql+maven)
  2. 1个ieee1394端口_如何使用圆形端口进行波导激励和终止
  3. jeasyui控件事件和方法的使用方法
  4. oracle limsize,查看oracle数据库----size
  5. wireshark抓包分析tcp连接与断开
  6. Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
  7. 《自卑与超越》读书笔记(part2)--生活的不确定性正是我们希望的来源
  8. vue在线聊天系统源码
  9. (六)洞悉linux下的Netfilteriptables:如何理解连接跟踪机制?(2)
  10. 比想象中更旗舰,金立M2017国内首秀堪称完美!
  11. 弦图(Chordal Graph)学习小记
  12. 量化交易之Dual Thrust策略
  13. 快速打造 Android 自定义表情库
  14. IV-18(前苏联ИВ-18)荧光管电子钟【Energy Pillar.能量柱】
  15. 地图-导航(百度/高德)
  16. plotting matlab,MATLAB - Plotting
  17. 公鸡每只值5文钱,母鸡每只值3文钱,而三只小鸡值一文钱。用100文钱买100只鸡,问:公鸡,母鸡,小鸡各有多少只?
  18. 小草 李白 《菩萨蛮》
  19. 学习数织物密度/经纬密
  20. MaiPDF让你的数据安全得到保护

热门文章

  1. NHibernate学习笔记(二):one-to-one关系映射
  2. linux cp 时 略过文件,CentOS下执行cp命令式提示略过文件夹
  3. airpods_如何通过AirPods与其他人共享音乐
  4. 异常处理—错误抛出机制
  5. Angular变化检测机制
  6. 自定义View的三个构造函数
  7. 查看和修改Oracle数据库服务器端的字符集
  8. 让未备案的网站先飙起来
  9. SQLite.NET (32位) 在64位环境中无法正常调试
  10. Mysql 常用函数总结