Day02-容器化管理工具(Docker)

前言

今天就要正式进入 DevOps 的环节了,首先要来介绍的是 Docker,之所以要先介绍 Docker 的原因是因为後面的 K8s 会大量的用到 Docker 的观念,因此在开始介绍重头戏前必须要先学习 Docker 的观念,接下来就让我们正式进入 Docker 的环节吧!

什麽是 Docker

Docker 是一套轻量级的虚拟化工具,用於部属应用, Docker 允许开发者将基础设施(Infrastructure)中的应用单独分割出来,形成一个又一个的 容器(container),进而提升整体系统的速度。

既然有了容器那就会有填满这个容器的东西,而这个就是 映像档(image),看到这边不晓得读者是否有感觉到跟一些我们常用的 虚拟机(Virtual Machine) 像是 VirtualBoxvmware 非常像,也是要去抓系统的 映像档(ISO),最後再将这些映像档藉由虚拟机挂载上去,难道 Docker 只是比较潮的 Virtual Machine?

其实两者是完全不一样的概念,接下来就来介绍一下两者的差别吧!

Docker vs Virtual Machine

  • 虚拟机(virtual machine)

    简单来说就是在现有的作业系统中再建立一个新的虚拟的作业系统,并利用这个虚拟的作业系统来处理事情,所以我们在使用 VirtualBox 或 vmware 时都必须要先设定 CPU 以及 记忆体 的大小,就像下图这样。

    那这些虚拟化 CPU 跟 记忆体 是从那里来呢?就是从电脑的 CPU 跟 记忆体 来,所以我们可以知道虚拟机就是要把整个硬体都虚拟化,最後再藉由这些虚拟化的硬体去安装系统,但这样就会非常吃电脑自身的资源,就像下图这样。

    不晓得大家在使用这些虚拟机时有没有发现一点,每次要启动这些系统时都会耗时非常久,这都是因为要把整个硬体层都虚拟化的原因,接下来我们可以简单的看一下虚拟机的架构:

    从上面的架构图我们可以很轻松地看到每个应用程序都必须要先依附在一个系统上,所以假如今天有三个应用程序每一种都要依附在不同的系统上的话,就必须要虚拟化三个硬体层跑三个系统了,这也会造成虚拟机非常吃电脑自身的资源,所以虚拟机的作用通常都是用来跑一个全新的作业系统来做事情,不会拿来当作是服务器用来跑应用程序的工具。

  • Docker

    Docker 最主要的功能就是在虚拟化「应用程序及其相对应的环境」,也就是我不用像虚拟机那样还要去设定到底要让整套系统拥有多少 CPU 以及 记忆体,只需要有应用程序的映像档以及要让这个应用程序运行的作业系统的映像档,就可以让这个应用程序顺利运行了,所以整体效能会比虚拟机高非常多,也不用像虚拟机那样那麽吃电脑资源了。

    而因为 Docker 主要在虚拟化「应用程序及其相对应的环境」,所以对於 Docker 来说重要的不是硬体资源而是应用程序跟执行环境,因此假如今天的要执行应用程序是可以共用在同一个系统上,那我就想办法把这些应用程序虚拟化成一个又一个的映像档就好,所以 Docker 的架构就像下面这样:

    可以看到 Docker 在执行每一个应用程序前都不需要依附在不同的系统上,所以就不会像虚拟机那样要占用很多电脑资源,而这也是为什麽服务器很多都会利用 Docker 来执行应用程序。


所以简单总结一下 Docker 跟虚拟机的不同之处就在於一个是虚拟化系统另一个是虚拟化硬体,这就是两个最大的差别了。

DockerHub

上面 Docker 相关的先备知识讲得差不多了,接下来讲点不一样的,不晓得为啥工程师很喜欢用 Hub 这个字来当作是管理相关事务的集合。

像 Git 有 GitHub

而 Docker 有 DockerHub

那 DockerHub 究竟是什麽呢?

DockerHub 是用来存放所有 Docker 会用到的映像档的大型仓库,透过 DockerHub 我们就可以顺利地引用这些映像档来达到虚拟化「应用程序及其相对应的环境」,所以我们假如之後要利用的一些大神写好的映像档都可以从 DockerHub 这边 pull 下来,想要知道有哪些映像档可以用的读者可以参考这个网站,里面有各式各样的映像档可以供大家使用。

小结

今天简单的介绍了 Docker 以及 DockerHub 的相关知识,希望读者能因此更了解 Docker,但只知道这些是没用的,毕竟都还没讲要如何产生映像档跟如何操作 Docker,而这些相关的内容都会在後面的文章一一为大家介绍。

下一篇文章就要介绍如何产生 Docker 映像档,如果对於文章有任何问题都欢迎在下面留言给笔者,让我们就下一篇文章见吧!


<<:  【Day 02】战略资讯系统(Strategic information system)

>>:  Day11 永丰金API 回顾

新新新手阅读 Angular 文件 - Day04

学习目标 这篇内容是纪录阅读官方文件Display a selection list,文章主要内容是...

[Day 6] Button

Day 5 进到了网站中最常见需要做功能性的环节 Button <Button variant...

28. 团队成功的要素是什麽?

前言 这个演讲蛮general的,也适合任何leader来看看。如果你觉得team里面的人都不太爱...

铁人赛 Day5 -- 建立属於自己的MySQL资料库

前言 作天终於把我们的帐号设定完成後,就可以来建立我们的资料库啦 建立属於自己的资料库 1.接下来建...